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,