X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1534e8b86fec84f67d8a253131a1ef60396a3a38..4a055a408ff0b9a8fa0453c4facbb268573e5360:/src/smpi/bindings/smpi_pmpi_request.cpp diff --git a/src/smpi/bindings/smpi_pmpi_request.cpp b/src/smpi/bindings/smpi_pmpi_request.cpp index 458f7f9608..5b150bc54f 100644 --- a/src/smpi/bindings/smpi_pmpi_request.cpp +++ b/src/smpi/bindings/smpi_pmpi_request.cpp @@ -311,8 +311,10 @@ int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI if (comm == MPI_COMM_NULL) { retval = MPI_ERR_COMM; } else if (src == MPI_PROC_NULL) { - simgrid::smpi::Status::empty(status); - status->MPI_SOURCE = MPI_PROC_NULL; + if(status != MPI_STATUS_IGNORE){ + simgrid::smpi::Status::empty(status); + status->MPI_SOURCE = MPI_PROC_NULL; + } retval = MPI_SUCCESS; } else if (src!=MPI_ANY_SOURCE && (src >= comm->group()->size() || src <0)){ retval = MPI_ERR_RANK; @@ -509,8 +511,10 @@ int PMPI_Test(MPI_Request * request, int *flag, MPI_Status * status) if (request == nullptr || flag == nullptr) { retval = MPI_ERR_ARG; } else if (*request == MPI_REQUEST_NULL) { - *flag= true; - simgrid::smpi::Status::empty(status); + if (status != MPI_STATUS_IGNORE){ + *flag= true; + simgrid::smpi::Status::empty(status); + } retval = MPI_SUCCESS; } else { int my_proc_id = ((*request)->comm() != MPI_COMM_NULL) ? simgrid::s4u::this_actor::get_pid() : -1; @@ -560,13 +564,13 @@ int PMPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status* status) { int retval = 0; smpi_bench_end(); - if (status == nullptr) { - retval = MPI_ERR_ARG; - } else if (comm == MPI_COMM_NULL) { + if (comm == MPI_COMM_NULL) { retval = MPI_ERR_COMM; } else if (source == MPI_PROC_NULL) { - simgrid::smpi::Status::empty(status); - status->MPI_SOURCE = MPI_PROC_NULL; + if (status != MPI_STATUS_IGNORE){ + simgrid::smpi::Status::empty(status); + status->MPI_SOURCE = MPI_PROC_NULL; + } retval = MPI_SUCCESS; } else { simgrid::smpi::Request::probe(source, tag, comm, status); @@ -586,8 +590,10 @@ int PMPI_Iprobe(int source, int tag, MPI_Comm comm, int* flag, MPI_Status* statu retval = MPI_ERR_COMM; } else if (source == MPI_PROC_NULL) { *flag=true; - simgrid::smpi::Status::empty(status); - status->MPI_SOURCE = MPI_PROC_NULL; + if (status != MPI_STATUS_IGNORE){ + simgrid::smpi::Status::empty(status); + status->MPI_SOURCE = MPI_PROC_NULL; + } retval = MPI_SUCCESS; } else { simgrid::smpi::Request::iprobe(source, tag, comm, flag, status);