From: markls Date: Tue, 21 Aug 2007 17:55:50 +0000 (+0000) Subject: apparently we can't just pop items off the cond_list for each action any more. X-Git-Tag: v3.3~1260 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/922792b7f43999747b4edc1ff39a7d19c585851f?hp=9b803384a6824e172da85bc3e5a7d8770df3e3ed apparently we can't just pop items off the cond_list for each action any more. changed to properly unregister conds from actions now. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@4100 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- 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); }