about summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-04-24 05:33:59 +0000
committerUlrich Drepper <drepper@redhat.com>2000-04-24 05:33:59 +0000
commit9682a871893ca51c048ef88d95e4bd114af5c59c (patch)
treebeac732644f8e8251afa5dd5f79497926f912011 /linuxthreads
parentd52b6462c98a2287666c700060c1fea27d2a2905 (diff)
downloadglibc-9682a871893ca51c048ef88d95e4bd114af5c59c.tar.gz
glibc-9682a871893ca51c048ef88d95e4bd114af5c59c.tar.xz
glibc-9682a871893ca51c048ef88d95e4bd114af5c59c.zip
Update.
2000-04-24  Mark Kettenis  <kettenis@gnu.org>

	* join.c (pthread_exit): Set p_terminated after reporting the
	termination event instead of before.
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/join.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index d78b0e7cc4..304b2fd18c 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+2000-04-24  Mark Kettenis  <kettenis@gnu.org>
+
+	* join.c (pthread_exit): Set p_terminated after reporting the
+	termination event instead of before.
+
 2000-04-20  Jakub Jelinek  <jakub@redhat.com>
 
 	* sysdeps/pthread/bits/libc-lock.h: Only declare __pthread_rwlock_*
diff --git a/linuxthreads/join.c b/linuxthreads/join.c
index b703c0d34c..5a97b17f97 100644
--- a/linuxthreads/join.c
+++ b/linuxthreads/join.c
@@ -37,8 +37,6 @@ void pthread_exit(void * retval)
   /* Store return value */
   __pthread_lock(THREAD_GETMEM(self, p_lock), self);
   THREAD_SETMEM(self, p_retval, retval);
-  /* Say that we've terminated */
-  THREAD_SETMEM(self, p_terminated, 1);
   /* See whether we have to signal the death.  */
   if (THREAD_GETMEM(self, p_report_events))
     {
@@ -60,6 +58,8 @@ void pthread_exit(void * retval)
 	  __linuxthreads_death_event();
 	}
     }
+  /* Say that we've terminated */
+  THREAD_SETMEM(self, p_terminated, 1);
   /* See if someone is joining on us */
   joining = THREAD_GETMEM(self, p_joining);
   __pthread_spin_unlock(THREAD_GETMEM(self, p_lock));