rdv->name = name ? xbt_strdup(name) : NULL;
rdv->comm_fifo = xbt_fifo_new();
- if (name)
- xbt_dict_set(rdv_points, name, rdv, SIMIX_rdv_free);
+ if (rdv->name)
+ xbt_dict_set(rdv_points, rdv->name, rdv, SIMIX_rdv_free);
}
return rdv;
}
void SIMIX_rdv_destroy(smx_rdv_t rdv)
{
if (rdv->name)
- xbt_dict_remove(rdv_points, rdv->name);
+ xbt_dict_remove(rdv_points, rdv->name);
}
void SIMIX_rdv_free(void *data)
/* Associate this request to the action */
xbt_fifo_push(action->request_list, req);
if (action->state != SIMIX_WAITING && action->state != SIMIX_RUNNING){
- req->comm_waitany.result = cursor;
SIMIX_comm_finish(action);
break;
}
return it as the result of the call */
if (req->call == REQ_COMM_WAITANY) {
SIMIX_waitany_req_remove_from_actions(req);
+ if(!MC_IS_ENABLED)
+ req->comm_waitany.result = xbt_dynar_search(req->comm_waitany.comms, &action);
}
/* If the action is still in a rendez-vous point then remove from it */