summaryrefslogtreecommitdiff
path: root/src/thread/sem_post.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/sem_post.c')
-rw-r--r--src/thread/sem_post.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/thread/sem_post.c b/src/thread/sem_post.c
index 5c2517f2..1c8f763c 100644
--- a/src/thread/sem_post.c
+++ b/src/thread/sem_post.c
@@ -16,6 +16,6 @@ int sem_post(sem_t *sem)
if (waiters <= 1)
new &= ~0x80000000;
} while (a_cas(sem->__val, val, new) != val);
- if (val<0) __wake(sem->__val, waiters>1 ? 1 : -1, priv);
+ if (val<0 || waiters) __wake(sem->__val, waiters>1 ? 1 : -1, priv);
return 0;
}