about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/ChangeLog7
-rw-r--r--nptl/allocatestack.c2
-rw-r--r--nptl/pthread_join.c3
3 files changed, 11 insertions, 1 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index e63c71c841..60b03f764d 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,12 @@
 2003-05-16  Ulrich Drepper  <drepper@redhat.com>
 
+	* pthread_join.c (pthread_join): Set tid field of the joined
+	thread to -1.  This isn't necessary but helps to recognize some
+	error conditions with almost no cost.
+
+	* allocatestack.c (FREE_P): Also negative values indicate an
+	unused stack.
+
 	* unwind.c: Include <unistd.h>.
 
 2003-05-14  Ulrich Drepper  <drepper@redhat.com>
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 95ee992a18..9653b62cab 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -111,7 +111,7 @@ static unsigned int nptl_ncreated;
 
 
 /* Check whether the stack is still used or not.  */
-#define FREE_P(descr) ((descr)->tid == 0)
+#define FREE_P(descr) ((descr)->tid <= 0)
 
 
 /* We create a double linked list of all cache entries.  Double linked
diff --git a/nptl/pthread_join.c b/nptl/pthread_join.c
index f77c2c9f98..f94128dd96 100644
--- a/nptl/pthread_join.c
+++ b/nptl/pthread_join.c
@@ -93,6 +93,9 @@ pthread_join (threadid, thread_return)
   pthread_cleanup_pop (0);
 
 
+  /* We mark the thread as terminated and as joined.  */
+  pd->tid = -1;
+
   /* Store the return value if the caller is interested.  */
   if (thread_return != NULL)
     *thread_return = pd->result;