Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix the fix of the fix of testsome.
authorAugustin Degomme <adegomme@gmail.com>
Thu, 18 Jul 2019 15:03:56 +0000 (17:03 +0200)
committerAugustin Degomme <adegomme@gmail.com>
Thu, 18 Jul 2019 15:03:56 +0000 (17:03 +0200)
src/smpi/bindings/smpi_f77_request.cpp
src/smpi/mpi/smpi_request.cpp

index 485f062..7e128bc 100644 (file)
@@ -276,7 +276,7 @@ void mpi_testsome_ (int* incount, int*  requests, int* outcount, int* indices, M
   }
   *ierr = MPI_Testsome(*incount, reqs, outcount, indices, FORT_STATUSES_IGNORE(statuses));
   for(i=0;i<*incount;i++){
   }
   *ierr = MPI_Testsome(*incount, reqs, outcount, indices, FORT_STATUSES_IGNORE(statuses));
   for(i=0;i<*incount;i++){
-    if(indices[i] && reqs[indices[i]]==MPI_REQUEST_NULL){
+    if(reqs[indices[i]]==MPI_REQUEST_NULL){
       simgrid::smpi::Request::free_f(requests[indices[i]]);
       requests[indices[i]]=MPI_FORTRAN_REQUEST_NULL;
     }
       simgrid::smpi::Request::free_f(requests[indices[i]]);
       requests[indices[i]]=MPI_FORTRAN_REQUEST_NULL;
     }
index 05cdc18..7ae4f42 100644 (file)
@@ -599,10 +599,10 @@ int Request::testsome(int incount, MPI_Request requests[], int *count, int *indi
       if(ret!=MPI_SUCCESS)
         error = 1;
       if(flag) {
       if(ret!=MPI_SUCCESS)
         error = 1;
       if(flag) {
-        indices[i] = 1;
-        (*count)++;
+        indices[*count] = i;
         if (status != MPI_STATUSES_IGNORE)
         if (status != MPI_STATUSES_IGNORE)
-          status[i] = *pstat;
+          status[*count] = *pstat;
+        (*count)++;
         if ((requests[i] != MPI_REQUEST_NULL) && (requests[i]->flags_ & MPI_REQ_NON_PERSISTENT))
           requests[i] = MPI_REQUEST_NULL;
       }
         if ((requests[i] != MPI_REQUEST_NULL) && (requests[i]->flags_ & MPI_REQ_NON_PERSISTENT))
           requests[i] = MPI_REQUEST_NULL;
       }