*
* @sa gras_msg_handleall().
*/
-void gras_msg_handle(double timeOut)
+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;
gras_msg_cb_t cb;
s_gras_msg_cb_ctx_t ctx;
- int timerexpected, timeouted;
+ volatile int timerexpected, timeouted;
xbt_ex_t e;
XBT_VERB("Handling message within the next %.2fs", 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) {