1
1

Correct a threaded problem and make sure we only free what was allocated.

This commit was SVN r14803.
Этот коммит содержится в:
George Bosilca 2007-05-30 18:50:29 +00:00
родитель 905570a6d2
Коммит f8f71b9ba0

Просмотреть файл

@ -1187,6 +1187,7 @@ int mca_oob_tcp_register_subscription(orte_jobid_t jobid, char *trigger)
/* register subscribe callback to receive notification when all processes have registered */ /* register subscribe callback to receive notification when all processes have registered */
subscription = OBJ_NEW(mca_oob_tcp_subscription_t); subscription = OBJ_NEW(mca_oob_tcp_subscription_t);
subscription->jobid = jobid; subscription->jobid = jobid;
OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
opal_list_append(&mca_oob_tcp_component.tcp_subscriptions, &subscription->item); opal_list_append(&mca_oob_tcp_component.tcp_subscriptions, &subscription->item);
OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock); OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
@ -1269,7 +1270,6 @@ int mca_oob_tcp_register_contact_info(void)
/* extract payload for storage */ /* extract payload for storage */
if (ORTE_SUCCESS != (rc = orte_dss.unload(buffer, (void**)&(bo.bytes), &(bo.size)))) { if (ORTE_SUCCESS != (rc = orte_dss.unload(buffer, (void**)&(bo.bytes), &(bo.size)))) {
ORTE_ERROR_LOG(rc); ORTE_ERROR_LOG(rc);
free(segment);
OBJ_RELEASE(buffer); OBJ_RELEASE(buffer);
return rc; return rc;
} }
@ -1282,7 +1282,6 @@ int mca_oob_tcp_register_contact_info(void)
values[0]->type = ORTE_BYTE_OBJECT; values[0]->type = ORTE_BYTE_OBJECT;
if (ORTE_SUCCESS != (rc = orte_dss.copy(&(values[0]->data), &bo, ORTE_BYTE_OBJECT))) { if (ORTE_SUCCESS != (rc = orte_dss.copy(&(values[0]->data), &bo, ORTE_BYTE_OBJECT))) {
ORTE_ERROR_LOG(rc); ORTE_ERROR_LOG(rc);
free(segment);
return rc; return rc;
} }
@ -1295,7 +1294,6 @@ int mca_oob_tcp_register_contact_info(void)
"returned for selected oob interfaces.\n", "returned for selected oob interfaces.\n",
ORTE_NAME_ARGS(orte_process_info.my_name), tmp); ORTE_NAME_ARGS(orte_process_info.my_name), tmp);
ORTE_ERROR_LOG(ORTE_ERROR); ORTE_ERROR_LOG(ORTE_ERROR);
free(segment);
free(tmp); free(tmp);
free(bo.bytes); free(bo.bytes);
return ORTE_ERROR; return ORTE_ERROR;