X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9b803384a6824e172da85bc3e5a7d8770df3e3ed..922792b7f43999747b4edc1ff39a7d19c585851f:/src/smpi/smpi_base.c diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 61b82a9950..ad53360abb 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -414,6 +414,7 @@ void smpi_global_destroy() int smpi_run_simulation(int argc, char **argv) { + xbt_fifo_item_t cond_item = NULL; smx_cond_t cond = NULL; smx_action_t action = NULL; @@ -447,15 +448,17 @@ int smpi_run_simulation(int argc, char **argv) while (SIMIX_solve(actions_done, actions_failed) != -1.0) { while ((action = xbt_fifo_pop(actions_failed))) { DEBUG1("** %s failed **", action->name); - while ((cond = xbt_fifo_pop(action->cond_list))) { + xbt_fifo_foreach(action->cond_list, cond_item, cond, smx_cond_t) { SIMIX_cond_broadcast(cond); + SIMIX_unregister_action_to_condition(action, cond); } SIMIX_action_destroy(action); } while ((action = xbt_fifo_pop(actions_done))) { DEBUG1("** %s done **",action->name); - while ((cond = xbt_fifo_pop(action->cond_list))) { + xbt_fifo_foreach(action->cond_list, cond_item, cond, smx_cond_t) { SIMIX_cond_broadcast(cond); + SIMIX_unregister_action_to_condition(action, cond); } SIMIX_action_destroy(action); }