From: Augustin Degomme Date: Mon, 9 Jul 2018 16:01:54 +0000 (+0200) Subject: Fix issue with Fortran indexes not computed properly for waitany/testany. X-Git-Tag: v3_21~504 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/9221fa1d03e31904ab968278372863883b0aaca5 Fix issue with Fortran indexes not computed properly for waitany/testany. --- diff --git a/src/smpi/bindings/smpi_f77_request.cpp b/src/smpi/bindings/smpi_f77_request.cpp index 351f381f97..f36f095fcb 100644 --- a/src/smpi/bindings/smpi_f77_request.cpp +++ b/src/smpi/bindings/smpi_f77_request.cpp @@ -171,9 +171,12 @@ void mpi_waitany_(int* count, int* requests, int* index, MPI_Status* status, int reqs[i] = simgrid::smpi::Request::f2c(requests[i]); } *ierr = MPI_Waitany(*count, reqs, index, status); - if(reqs[*index]==MPI_REQUEST_NULL){ - simgrid::smpi::Request::free_f(requests[*index]); - requests[*index]=MPI_FORTRAN_REQUEST_NULL; + if(*index!=MPI_UNDEFINED){ + if(reqs[*index]==MPI_REQUEST_NULL){ + simgrid::smpi::Request::free_f(requests[*index]); + requests[*index]=MPI_FORTRAN_REQUEST_NULL; + } + *index=*index+1; } xbt_free(reqs); } @@ -251,9 +254,12 @@ void mpi_testany_ (int* count, int* requests, int *index, int *flag, MPI_Status* reqs[i] = simgrid::smpi::Request::f2c(requests[i]); } *ierr = MPI_Testany(*count, reqs, index, flag, FORT_STATUS_IGNORE(status)); - if(*index!=MPI_UNDEFINED && reqs[*index]==MPI_REQUEST_NULL){ + if(*index!=MPI_UNDEFINED){ + if(reqs[*index]==MPI_REQUEST_NULL){ simgrid::smpi::Request::free_f(requests[*index]); requests[*index]=MPI_FORTRAN_REQUEST_NULL; + } + *index=*index+1; } xbt_free(reqs); }