Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reinitialize waiting_action at proper place.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Fri, 27 Apr 2012 10:03:57 +0000 (12:03 +0200)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Fri, 27 Apr 2012 10:37:18 +0000 (12:37 +0200)
src/simix/smx_synchro.c
src/simix/smx_user.c

index c9af7b9..2e71eba 100644 (file)
@@ -109,6 +109,7 @@ static void SIMIX_synchro_finish(smx_action_t action)
   }
 
   SIMIX_synchro_stop_waiting(simcall->issuer, simcall);
+  simcall->issuer->waiting_action = NULL;
   SIMIX_synchro_destroy(action);
   SIMIX_simcall_answer(simcall);
   XBT_OUT();
index c0198ab..8c08f25 100644 (file)
@@ -1079,8 +1079,6 @@ void simcall_cond_wait_timeout(smx_cond_t cond,
                                  smx_mutex_t mutex,
                                  double timeout)
 {
-  xbt_ex_t e;
-
   xbt_assert(isfinite(timeout), "timeout is not finite!");
   
   smx_simcall_t simcall = SIMIX_simcall_mine();
@@ -1090,20 +1088,7 @@ void simcall_cond_wait_timeout(smx_cond_t cond,
   simcall->cond_wait_timeout.mutex = mutex;
   simcall->cond_wait_timeout.timeout = timeout;
 
-  TRY {
-    SIMIX_simcall_push(simcall->issuer);
-  }
-  CATCH(e) {
-    switch (e.category) {
-      case timeout_error:
-        simcall->issuer->waiting_action = NULL; // FIXME: should clean ?
-        break;
-      default:
-        break;
-    }
-    RETHROW;
-    xbt_ex_free(e);
-  }
+  SIMIX_simcall_push(simcall->issuer);
 }
 
 void simcall_cond_broadcast(smx_cond_t cond)