Преглед на файлове

fix sem_timedwait bug introduced in timedwait unification

this dec used to be performed by the cancellation handler, which was
called when popped.
Rich Felker преди 13 години
родител
ревизия
bdd893377f
променени са 1 файла, в които са добавени 1 реда и са изтрити 0 реда
  1. 1 0
      src/thread/sem_timedwait.c

+ 1 - 0
src/thread/sem_timedwait.c

@@ -13,6 +13,7 @@ int sem_timedwait(sem_t *sem, const struct timespec *at)
 		a_inc(sem->__val+1);
 		a_cas(sem->__val, 0, -1);
 		r = __timedwait(sem->__val, -1, CLOCK_REALTIME, at, cleanup, sem->__val+1, 0);
+		a_dec(sem->__val+1);
 		if (r) {
 			errno = r;
 			return -1;