From b035ed05977fdef5ced4691028284b7f0ebaba19 Mon Sep 17 00:00:00 2001 From: rpj Date: Tue, 25 Jul 2000 11:27:23 +0000 Subject: 2000-07-25 Ross Johnson * dll.c (dllMain): Remove 2000-07-21 change - problem appears to be in pthread_create(). 2000-07-21 Ross Johnson * 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" * 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. --- create.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'create.c') diff --git a/create.c b/create.c index 79085bf..ac1384f 100644 --- a/create.c +++ b/create.c @@ -125,6 +125,7 @@ pthread_create (pthread_t * tid, : PThreadStateSuspended; thread->keys = NULL; + #if ! defined (__MINGW32__) || defined (__MSVCRT__) thread->threadH = (HANDLE) @@ -144,14 +145,20 @@ pthread_create (pthread_t * tid, (unsigned) stackSize, /* default stack size */ parms); - /* Make the return code to match _beginthreadex's. */ + /* + * Make the return code match _beginthreadex's. + */ if (thread->threadH == (HANDLE)-1L) - thread->threadH = NULL; + { + thread->threadH = 0; + } else if (! run) { - /* beginthread does not allow for create flags, so we do it now. - Note that beginthread itself creates the thread in SUSPENDED - mode, and then calls ResumeThread to start it. */ + /* + * beginthread does not allow for create flags, so we do it now. + * Note that beginthread itself creates the thread in SUSPENDED + * mode, and then calls ResumeThread to start it. + */ SuspendThread (thread->threadH); } -- cgit v1.2.3