about summary refs log tree commit diff
path: root/nptl/pthread_create.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-27 21:14:41 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-27 21:14:41 +0000
commit18d009ca00eea5127f162b3179a529516a8445d2 (patch)
tree61619d90a1b39530bad8302d790815112a5dec72 /nptl/pthread_create.c
parent28cf305854fd91eaa5b5e16d23a612e094f02920 (diff)
downloadglibc-18d009ca00eea5127f162b3179a529516a8445d2.tar.gz
glibc-18d009ca00eea5127f162b3179a529516a8445d2.tar.xz
glibc-18d009ca00eea5127f162b3179a529516a8445d2.zip
Update.
	* pthread_create.c (start_thread): Don't use setjmp inside
	__builtin_expect to work around gcc bug.
Diffstat (limited to 'nptl/pthread_create.c')
-rw-r--r--nptl/pthread_create.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index 41218745d6..8598e4c763 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -221,7 +221,8 @@ start_thread (void *arg)
 
   /* This is where the try/finally block should be created.  For
      compilers without that support we do use setjmp.  */
-  if (__builtin_expect (setjmp (pd->cancelbuf) == 0, 1))
+  int not_first_call = setjmp (pd->cancelbuf);
+  if (__builtin_expect (! not_first_call, 1))
     {
       /* Run the code the user provided.  */
 #ifdef CALL_THREAD_FCT