Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Making the exception/exception test work:
[simgrid.git] / src / simix / smx_process.c
index ce66e94..b738974 100644 (file)
@@ -404,11 +404,12 @@ void SIMIX_process_throw(smx_process_t process, xbt_errcat_t cat, int value, con
       break;
 
     case SIMIX_SYNC_SLEEP:
-      SIMIX_process_sleep_destroy(process->waiting_synchro);
-      break;
-
     case SIMIX_SYNC_JOIN:
       SIMIX_process_sleep_destroy(process->waiting_synchro);
+      if (!xbt_dynar_member(simix_global->process_to_run, &(process)) && process != SIMIX_process_self()) {
+        XBT_DEBUG("Inserting %s in the to_run list", process->name);
+        xbt_dynar_push_as(simix_global->process_to_run, smx_process_t, process);
+      }
       break;
 
     case SIMIX_SYNC_SYNCHRO:
@@ -423,8 +424,6 @@ void SIMIX_process_throw(smx_process_t process, xbt_errcat_t cat, int value, con
   }
   process->waiting_synchro = NULL;
 
-  if (!xbt_dynar_member(simix_global->process_to_run, &(process)) && process != SIMIX_process_self())
-    xbt_dynar_push_as(simix_global->process_to_run, smx_process_t, process);
 }
 
 void simcall_HANDLER_process_killall(smx_simcall_t simcall, int reset_pid) {