about summary refs log tree commit diff
path: root/nptl
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-05-21 16:19:16 +0000
committerUlrich Drepper <drepper@redhat.com>2004-05-21 16:19:16 +0000
commit3abc82c8ce46447abc38762069beb548a554f382 (patch)
treeabfeafe9373aa8b996f27167ea9b08b9d650731f /nptl
parentf6d77b2076c566a082da5b95007ea5786eaf2dc0 (diff)
downloadglibc-3abc82c8ce46447abc38762069beb548a554f382.tar.gz
glibc-3abc82c8ce46447abc38762069beb548a554f382.tar.xz
glibc-3abc82c8ce46447abc38762069beb548a554f382.zip
Update.
2004-05-21  Ulrich Drepper  <drepper@redhat.com>

	* idna.c (idna_to_unicode_4z4z): Fix test for failed memory allocation.
	Patch by Simon Josefsson.
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/pthread/pthread_cond_wait.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 592f73b095..5f1f61c088 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Compare
+	__broadcast_seq with bc_seq after acquiring internal lock instead of
+	before it.
+
 2004-05-18  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile (.NOTPARALLEL): Only serialize make check/xcheck, not
diff --git a/nptl/sysdeps/pthread/pthread_cond_wait.c b/nptl/sysdeps/pthread/pthread_cond_wait.c
index a05060a107..128f5a2d99 100644
--- a/nptl/sysdeps/pthread/pthread_cond_wait.c
+++ b/nptl/sysdeps/pthread/pthread_cond_wait.c
@@ -143,13 +143,13 @@ __pthread_cond_wait (cond, mutex)
       /* Disable asynchronous cancellation.  */
       __pthread_disable_asynccancel (cbuffer.oldtype);
 
+      /* We are going to look at shared data again, so get the lock.  */
+      lll_mutex_lock (cond->__data.__lock);
+
       /* If a broadcast happened, we are done.  */
       if (cbuffer.bc_seq != cond->__data.__broadcast_seq)
 	goto bc_out;
 
-      /* We are going to look at shared data again, so get the lock.  */
-      lll_mutex_lock (cond->__data.__lock);
-
       /* Check whether we are eligible for wakeup.  */
       val = cond->__data.__wakeup_seq;
     }