- if (xbt_swag_belongs(self,sem->sleeping))
- xbt_swag_remove(self,sem->sleeping);
- else {
- xbt_assert0(result==-1,"More than one semaphore unlocked us. Dunno what to do");
+ if (!xbt_fifo_remove(sem->sleeping, self)) {
+ xbt_assert1(result == -1, "You're trying to wait more than once on semaphore %p, don't you ?", sem);