At many places all over the code I see

OBJ_RELEASE(buffer)
buffer = NULL;

Looking at the definition of OBJ_RELEASE() this seems unnecessary and
wrong:

#define OBJ_RELEASE(object)                                             \
    do {                                                                \
        if (0 == opal_obj_update((opal_object_t *) (object), -1)) {     \
            opal_obj_run_destructors((opal_object_t *) (object));       \
            free(object);                                               \
            object = NULL;                                              \
        }                                                               \
    } while (0)

The object is set to NULL by the macro and only if the opal_obj_update() was
successful. So it seems setting the buffer manually to NULL after OBJ_RELEASE()
is unnecessary and if opal_obj_update() failed it also is wrong.

                Adrian

Reply via email to