From f8f3e115d3c8253de677f6e7c78831b8ec18fab2 Mon Sep 17 00:00:00 2001 From: deischen Date: Fri, 6 Feb 2004 13:54:38 +0000 Subject: Only allow the semaphore to be taken when the value is positive. Don't decrement it twice when it is taken. Reported by: kris --- lib/libc/gen/sem.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/libc/gen/sem.c b/lib/libc/gen/sem.c index 34ea8f7..ec80bc3 100644 --- a/lib/libc/gen/sem.c +++ b/lib/libc/gen/sem.c @@ -304,14 +304,13 @@ __sem_trywait(sem_t *sem) retval = ksem_trywait((*sem)->semid); else { _pthread_mutex_lock(&(*sem)->lock); - if ((*sem)->count != 0) { + if ((*sem)->count > 0) { (*sem)->count--; retval = 0; } else { errno = EAGAIN; retval = -1; } - (*sem)->count--; _pthread_mutex_unlock(&(*sem)->lock); } return (retval); -- cgit v1.1