summaryrefslogtreecommitdiff
path: root/sync.c
diff options
context:
space:
mode:
authorrpj <rpj>2000-07-25 11:27:23 +0000
committerrpj <rpj>2000-07-25 11:27:23 +0000
commitb035ed05977fdef5ced4691028284b7f0ebaba19 (patch)
tree008e3d049ac5a01cd34118ddb2f219d7040845b8 /sync.c
parent20aff4de1de1ed8c89c5b617e4eae4f475bb4a6e (diff)
2000-07-25 Ross Johnson <rpj@setup1.ise.canberra.edu.au>
* dll.c (dllMain): Remove 2000-07-21 change - problem appears to be in pthread_create(). 2000-07-21 Ross Johnson <rpj@setup1.ise.canberra.edu.au> * create.c (pthread_create): Set threadH to 0 (zero) everywhere. Some assignments were using NULL. Maybe it should be NULL everywhere - need to check. (I know they are nearly always the same thing - but not by definition.) * dll.c: Include resource leakage work-around. This is a partial FIXME which doesn't stop all leakage. The real problem needs to be found and fixed. - "David Baggett" <dmb@itasoftware.com> * misc.c (pthread_self): Try to catch NULL thread handles at the point where they might be generated, even though they should always be valid at this point. * tsd.c (pthread_setspecific): return an error value if pthread_self() returns NULL. * sync.c (pthread_join): return an error value if pthread_self() returns NULL. * signal.c (pthread_sigmask): return an error value if pthread_self() returns NULL.
Diffstat (limited to 'sync.c')
-rw-r--r--sync.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sync.c b/sync.c
index f2d1b06..b7efc29 100644
--- a/sync.c
+++ b/sync.c
@@ -104,6 +104,7 @@ pthread_join (pthread_t thread, void **value_ptr)
* 0 'thread' has completed
* EINVAL thread is not a joinable thread,
* ESRCH no thread could be found with ID 'thread',
+ * ENOENT thread couldn't find it's own valid handle,
* EDEADLK attempt to join thread with self
*
* ------------------------------------------------------
@@ -113,6 +114,10 @@ pthread_join (pthread_t thread, void **value_ptr)
pthread_t self;
self = pthread_self ();
+ if (self == NULL)
+ {
+ return ENOENT;
+ }
if (pthread_equal (self, thread) != 0)
{