Fix the double-check locking[1] by defining the cls_initialized member to
volatile.
Greetings
Bert Wesarg
[1]: http://en.wikipedia.org/wiki/Double-checked_locking
---
opal/class/opal_object.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff --quilt old/opal/class/opal_object.h new/opal/class/opal_object.h
--- old/opal/class/opal_object.h
+++ new/opal/class/opal_object.h
@@ -148,11 +148,11 @@ typedef void (*opal_destruct_t) (opal_ob
struct opal_class_t {
const char *cls_name; /**< symbolic name for class */
opal_class_t *cls_parent; /**< parent class descriptor */
opal_construct_t cls_construct; /**< class constructor */
opal_destruct_t cls_destruct; /**< class destructor */
- int cls_initialized; /**< is class initialized */
+ volatile int cls_initialized; /**< is class initialized */
int cls_depth; /**< depth of class hierarchy tree */
opal_construct_t *cls_construct_array;
/**< array of parent class constructors */
opal_destruct_t *cls_destruct_array;
/**< array of parent class destructors */