diff options
-rw-r--r-- | libc/bionic/pthread.c | 9 | ||||
-rw-r--r-- | libc/docs/CHANGES.TXT | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/libc/bionic/pthread.c b/libc/bionic/pthread.c index 061cce1..e21a1f9 100644 --- a/libc/bionic/pthread.c +++ b/libc/bionic/pthread.c @@ -880,8 +880,13 @@ int pthread_mutex_init(pthread_mutex_t *mutex, int pthread_mutex_destroy(pthread_mutex_t *mutex) { - if (__unlikely(mutex == NULL)) - return EINVAL; + int ret; + + /* use trylock to ensure that the mutex value is + * valid and is not already locked. */ + ret = pthread_mutex_trylock(mutex); + if (ret != 0) + return ret; mutex->value = 0xdead10cc; return 0; diff --git a/libc/docs/CHANGES.TXT b/libc/docs/CHANGES.TXT index 83703d8..5a7a1ac 100644 --- a/libc/docs/CHANGES.TXT +++ b/libc/docs/CHANGES.TXT @@ -3,7 +3,9 @@ Bionic ChangeLog: Differences between current and Android 2.2: -- <pthread.h>: Add reader/writer locks implementation. +- <pthread.h>: Add reader/writer locks implementation. Add sanity + checking to pthread_mutex_destroy() (e.g. a locked mutex will return + EBUSY). - <semaphore.h>: Use private futexes for semaphore implementation, unless your set 'pshared' to non-0 when calling sem_init(). |