X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/69df130a50b94f86e4ef3fae61b68bfa2bbaccca..bee3400ba6e1daeca869db8753dc4d86bcda28ca:/src/gras/Msg/gras_msg_exchange.c diff --git a/src/gras/Msg/gras_msg_exchange.c b/src/gras/Msg/gras_msg_exchange.c index bef735197c..127ce0f21c 100644 --- a/src/gras/Msg/gras_msg_exchange.c +++ b/src/gras/Msg/gras_msg_exchange.c @@ -296,7 +296,7 @@ void gras_msg_handle(volatile double timeOut) double untiltimer; unsigned int cpt; - int volatile ran_ok; + volatile int ran_ok; s_gras_msg_t msg; @@ -398,16 +398,18 @@ void gras_msg_handle(volatile double timeOut) ran_ok = 0; TRY { xbt_dynar_foreach(list->cbs, cpt, cb) { + volatile unsigned int cpt2 = cpt; if (!ran_ok) { XBT_DEBUG ("Use the callback #%d (@%p) for incomming msg '%s' (payload_size=%d)", cpt + 1, cb, msg.type->name, msg.payl_size); - if (!(*cb) (&ctx, msg.payl)) { + if (!cb(&ctx, msg.payl)) { /* cb handled the message */ free(msg.payl); ran_ok = 1; } } + cpt = cpt2; } } CATCH(e) {