diff --git a/ompi/mpi/c/sendrecv_replace.c b/ompi/mpi/c/sendrecv_replace.c index 3c74f50c7178fb4177b1240a00863c2914211abf..5fa638c4e53c5c06b524635da7515b5fc59ccee7 100644 --- a/ompi/mpi/c/sendrecv_replace.c +++ b/ompi/mpi/c/sendrecv_replace.c @@ -114,7 +114,7 @@ int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, OMPI_ERRHANDLER_RETURN(rc, comm, rc, FUNC_NAME); } - /* initialize convertor to unpack recv buffer */ + /* initialize convertor to pack send buffer */ OBJ_CONSTRUCT(&convertor, opal_convertor_t); opal_convertor_copy_and_prepare_for_send( proc->super.proc_convertor, &(datatype->super), count, buf, 0, &convertor ); @@ -132,6 +132,9 @@ int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype, max_data = packed_size; iov_count = 1; rc = opal_convertor_pack(&convertor, &iov, &iov_count, &max_data); + if(OMPI_SUCCESS != rc) { + goto cleanup_and_return; + } /* receive into the buffer */ rc = MCA_PML_CALL(irecv(buf, count, datatype,