Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Don't crash simulation if size is 0 in sendrecv_replace, as it is legal.
authorAugustin Degomme <26892-adegomme@users.noreply.framagit.org>
Mon, 3 Oct 2022 21:38:20 +0000 (21:38 +0000)
committerAugustin Degomme <26892-adegomme@users.noreply.framagit.org>
Mon, 3 Oct 2022 21:38:20 +0000 (21:38 +0000)
src/smpi/bindings/smpi_pmpi_request.cpp

index 96bb98b..51f955a 100644 (file)
@@ -437,7 +437,10 @@ int PMPI_Sendrecv_replace(void* buf, int count, MPI_Datatype datatype, int dst,
   CHECK_BUFFER(1, buf, count, datatype)
 
   int size = datatype->get_extent() * count;
-  xbt_assert(size > 0);
+  if (size == 0)
+    return MPI_SUCCESS;
+  else if (size <0)
+    return MPI_ERR_ARG;
   std::vector<char> recvbuf(size);
   retval =
       MPI_Sendrecv(buf, count, datatype, dst, sendtag, recvbuf.data(), count, datatype, src, recvtag, comm, status);