>From eb451fc68ab7087c4eff1346656b8266ee911858 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 6 Jan 2017 18:35:05 +0100 Subject: [PATCH 2/3] lock: Improve destruction. * lib/glthread/lock.c (glthread_rwlock_destroy_multithreaded): Destroy the wait queues before the lock. Suggested by Torvald Riegel . --- ChangeLog | 7 +++++++ lib/glthread/lock.c | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77f7c2f..c5f410f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2017-01-06 Bruno Haible + lock: Improve destruction. + * lib/glthread/lock.c (glthread_rwlock_destroy_multithreaded): Destroy + the wait queues before the lock. + Suggested by Torvald Riegel . + +2017-01-06 Bruno Haible + lock: Fix data races. * m4/lock.m4 (gl_PREREQ_LOCK): Test for . * lib/glthread/lock.c (atomic_thread_fence): Define as a dummy if diff --git a/lib/glthread/lock.c b/lib/glthread/lock.c index eceb2c3..b0f78f4 100644 --- a/lib/glthread/lock.c +++ b/lib/glthread/lock.c @@ -319,15 +319,15 @@ glthread_rwlock_destroy_multithreaded (gl_rwlock_t *lock) { int err; - err = pthread_mutex_destroy (&lock->lock); - if (err != 0) - return err; err = pthread_cond_destroy (&lock->waiting_readers); if (err != 0) return err; err = pthread_cond_destroy (&lock->waiting_writers); if (err != 0) return err; + err = pthread_mutex_destroy (&lock->lock); + if (err != 0) + return err; return 0; } -- 2.6.4