1
1

play a bit nicer with references.

This commit was SVN r14201.
Этот коммит содержится в:
Josh Hursey 2007-04-02 22:27:52 +00:00
родитель b1bed8375c
Коммит 51daa15f9c
2 изменённых файлов: 8 добавлений и 8 удалений

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

@ -1041,11 +1041,10 @@ ompi_crcp_base_pml_state_t* ompi_crcp_coord_pml_irecv( void *buf, size_t count,
tag = drain_msg_ref->tag;
memcpy(buf, drain_msg_ref->buffer, tmp_ddt_size * count);
*request = drain_msg_ref->request;
OBJ_RETAIN(*request);
/* Remove the message from the list */
if( NULL != drain_msg_ref->datatype ) {
OBJ_RELEASE(drain_msg_ref->datatype);
drain_msg_ref->datatype = NULL;
}
opal_list_remove_item(&drained_msg_list, &(drain_msg_ref->super));
OBJ_RELEASE(drain_msg_ref);
@ -1196,10 +1195,6 @@ ompi_crcp_base_pml_state_t* ompi_crcp_coord_pml_recv( void *buf, size_t count,
memcpy(status, &drain_msg_ref->status, sizeof(ompi_status_public_t));
/* Remove the message from the list */
if( NULL != drain_msg_ref->datatype ) {
OBJ_RELEASE(drain_msg_ref->datatype);
drain_msg_ref->datatype = NULL;
}
opal_list_remove_item(&drained_msg_list, &(drain_msg_ref->super));
OBJ_RELEASE(drain_msg_ref);

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

@ -513,6 +513,10 @@ int mca_pml_crcpw_irecv( void *buf, size_t count, ompi_datatype_t *datatype, int
return ret;
}
if( OMPI_CRCP_PML_DONE == pml_state->state) {
goto CLEANUP;
}
if( OMPI_CRCP_PML_SKIP != pml_state->state) {
if( OMPI_SUCCESS != (ret = mca_pml_crcpw_module.wrapped_pml_module.pml_irecv(buf, count, datatype, src, tag, comm, request) ) ) {
PML_CRCP_STATE_RETURN(pml_state);
@ -528,6 +532,7 @@ int mca_pml_crcpw_irecv( void *buf, size_t count, ompi_datatype_t *datatype, int
return ret;
}
CLEANUP:
PML_CRCP_STATE_RETURN(pml_state);
return OMPI_SUCCESS;