X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/954f038683247f1e21f94c45ad2f449ffb83b1e5..f1826f5595e97845ff8613e0a12f604ee45389fb:/src/simix/smx_synchro.c diff --git a/src/simix/smx_synchro.c b/src/simix/smx_synchro.c index 92ddf2778e..77170c58a2 100644 --- a/src/simix/smx_synchro.c +++ b/src/simix/smx_synchro.c @@ -404,6 +404,7 @@ void SIMIX_sem_release_forever(smx_sem_t sem) { xbt_swag_remove(proc, sem->sleeping); xbt_swag_insert(proc, simix_global->process_to_run); } + sem->capacity = SMX_SEM_NOLIMIT; } /** @@ -551,11 +552,11 @@ unsigned int SIMIX_sem_acquire_any(xbt_dynar_t sems) { xbt_swag_insert(self, sem->sleeping); } SIMIX_process_yield(); + self->sem = NULL; while (self->suspended) SIMIX_process_yield(); /* one of the semaphore unsuspended us -- great, let's search which one (and get out of the others) */ - self->sem = NULL; xbt_dynar_foreach(sems,counter,sem) { if (xbt_swag_belongs(self,sem->sleeping)) xbt_swag_remove(self,sem->sleeping);