X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7a25b8e6a7aae6d40849189e58495aee0d8f726f..605e2d3042cadf11949ae854862dc5553b74dd30:/src/simix/smx_network.c diff --git a/src/simix/smx_network.c b/src/simix/smx_network.c index 41192b6e23..990a4f54c4 100644 --- a/src/simix/smx_network.c +++ b/src/simix/smx_network.c @@ -51,8 +51,8 @@ smx_rdv_t SIMIX_rdv_create(const char *name) 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; } @@ -60,7 +60,7 @@ smx_rdv_t SIMIX_rdv_create(const char *name) 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) @@ -408,7 +408,6 @@ void SIMIX_pre_comm_waitany(smx_req_t req, unsigned int idx) /* 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; } @@ -481,6 +480,8 @@ void SIMIX_comm_finish(smx_action_t action) 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 */