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;
} else 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);
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);