1
1

There is a cleanup label, so I expect to use it in all cases.

This commit was SVN r14329.
Этот коммит содержится в:
George Bosilca 2007-04-12 05:05:36 +00:00
родитель d1ce4a44ca
Коммит 604e79f2d2

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

@ -60,25 +60,20 @@ int orte_gpr_replica_put(orte_std_cntr_t cnt, orte_gpr_value_t **values)
/* first check for error - all keyvals must have a non-NULL string key */ /* first check for error - all keyvals must have a non-NULL string key */
for (j=0; j < val->cnt; j++) { for (j=0; j < val->cnt; j++) {
if (NULL == (val->keyvals[j])->key) { if (NULL == (val->keyvals[j])->key) {
ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM); rc = ORTE_ERR_BAD_PARAM;
OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex); goto CLEANUP;
return ORTE_ERR_BAD_PARAM;
} }
} }
/* find the segment */ /* find the segment */
if (ORTE_SUCCESS != (rc = orte_gpr_replica_find_seg(&seg, true, val->segment))) { if (ORTE_SUCCESS != (rc = orte_gpr_replica_find_seg(&seg, true, val->segment))) {
ORTE_ERROR_LOG(rc); goto CLEANUP;
OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex);
return rc;
} }
/* convert tokens to array of itags */ /* convert tokens to array of itags */
if (ORTE_SUCCESS != (rc = orte_gpr_replica_get_itag_list(&itags, seg, if (ORTE_SUCCESS != (rc = orte_gpr_replica_get_itag_list(&itags, seg,
val->tokens, &(val->num_tokens)))) { val->tokens, &(val->num_tokens)))) {
ORTE_ERROR_LOG(rc); goto CLEANUP;
OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex);
return rc;
} }
if (ORTE_SUCCESS != (rc = orte_gpr_replica_put_fn(val->addr_mode, seg, itags, val->num_tokens, if (ORTE_SUCCESS != (rc = orte_gpr_replica_put_fn(val->addr_mode, seg, itags, val->num_tokens,
@ -87,17 +82,16 @@ int orte_gpr_replica_put(orte_std_cntr_t cnt, orte_gpr_value_t **values)
} }
if (ORTE_SUCCESS != (rc = orte_gpr_replica_check_events())) { if (ORTE_SUCCESS != (rc = orte_gpr_replica_check_events())) {
ORTE_ERROR_LOG(rc);
goto CLEANUP; goto CLEANUP;
} }
if (NULL != itags) { if (NULL != itags) {
free(itags); free(itags);
itags = NULL;
} }
itags = NULL;
} }
CLEANUP: CLEANUP: /* or not ... */
/* release list of itags */ /* release list of itags */
if (NULL != itags) { if (NULL != itags) {
free(itags); free(itags);
@ -105,12 +99,13 @@ CLEANUP:
if (ORTE_SUCCESS == rc) { if (ORTE_SUCCESS == rc) {
rc = orte_gpr_replica_process_callbacks(); rc = orte_gpr_replica_process_callbacks();
} else {
ORTE_ERROR_LOG(rc);
} }
OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex); OPAL_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex);
return rc; return rc;
} }