diff options
author | rpj <rpj> | 2001-10-26 00:59:36 +0000 |
---|---|---|
committer | rpj <rpj> | 2001-10-26 00:59:36 +0000 |
commit | 104d1669a344de413ea4c7f1106fcf4a5d95b610 (patch) | |
tree | f60879376166e1eb13b98e57cb07c154f8d2be8d | |
parent | 70451597bca186f31d4a69aec0ae940fe90e3d56 (diff) |
semaphore.c (sem_init): somehow when sem_t reverted to an opaque struct
the calloc NULL check was left in the conditionally included section.
(sem_destroy): Likewise, the calloced sem_t wasn't being freed.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | semaphore.c | 11 |
2 files changed, 11 insertions, 5 deletions
@@ -5,7 +5,10 @@ * semaphore.c (sem_init): Fix typo and missing bracket in conditionally compiled code. Only older versions of WinCE require this code, hence it doesn't normally get - tested. + tested; somehow when sem_t reverted to an opaque struct + the calloc NULL check was left in the conditionally included + section. + (sem_destroy): Likewise, the calloced sem_t wasn't being freed. 2001-10-25 Ross Johnson <rpj@setup1.ise.canberra.edu.au> diff --git a/semaphore.c b/semaphore.c index 1e23285..0dc9ed9 100644 --- a/semaphore.c +++ b/semaphore.c @@ -90,14 +90,16 @@ sem_init (sem_t * sem, int pshared, unsigned int value) } else { - s = (sem_t) calloc (1, sizeof (*s)); -#ifdef NEED_SEM + s = (sem_t) calloc (1, sizeof (*s)); if (NULL == s) { result = ENOMEM; } + +#ifdef NEED_SEM + else { s->value = value; @@ -184,7 +186,7 @@ sem_destroy (sem_t * sem) } else { - s = *sem; + s = *sem; *sem = NULL; #ifdef NEED_SEM @@ -197,7 +199,6 @@ sem_destroy (sem_t * sem) else { DeleteCriticalSection(&s->sem_lock_cs); - free(s); } #else /* NEED_SEM */ @@ -218,6 +219,8 @@ sem_destroy (sem_t * sem) return -1; } + free(s); + return 0; } /* sem_destroy */ |