- if((requests[i] != MPI_REQUEST_NULL) && (requests[i]->action != NULL)) {
- print_request("Waiting any ", requests[i]);
- xbt_dynar_push(comms, &requests[i]->action);
- map[size] = i;
- size++;
+ if(requests[i] != MPI_REQUEST_NULL) {
+ if (requests[i]->action != NULL) {
+ XBT_DEBUG("Waiting any %p ", requests[i]);
+ xbt_dynar_push(comms, &requests[i]->action);
+ map[size] = i;
+ size++;
+ }else{
+ //This is a finished detached request, let's return this one
+ size=0;//so we free the dynar but don't do the waitany call
+ index=i;
+ finish_wait(&requests[i], status);//cleanup if refcount = 0
+ requests[i]=MPI_REQUEST_NULL;//set to null
+ break;
+ }