diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-06-10 07:45:56 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-06-10 07:45:56 +0000 |
commit | ee5d48553adde607b88bcbb1ac533d88f6a0207a (patch) | |
tree | e0a9ad909098c846e12a634b8d3b4111b24d9b6f /linuxthreads/pthread.c | |
parent | 7e6d3809908ca640e5334ced033d6f905783731a (diff) | |
download | glibc-ee5d48553adde607b88bcbb1ac533d88f6a0207a.tar.gz glibc-ee5d48553adde607b88bcbb1ac533d88f6a0207a.tar.xz glibc-ee5d48553adde607b88bcbb1ac533d88f6a0207a.zip |
Update.
2000-06-10 Ulrich Drepper <drepper@redhat.com> * pthread.c (__pthread_create_2_1): Optimize a bit. * internals.h (invalid_handle): Also test for p_terminated != 0. (nonexisting_handle): New function. Same as old invalid_handle. * join.c (pthread_join): Use nonexisting_handle instead of invalid_handle to test for acceptable thread handle. Reported by Permaine Cheung <pcheung@cygnus.com>.
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 0f63127475..38bf197a62 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -500,6 +500,7 @@ int __pthread_create_2_1(pthread_t *thread, const pthread_attr_t *attr, { pthread_descr self = thread_self(); struct pthread_request request; + int retval; if (__pthread_manager_request < 0) { if (__pthread_initialize_manager() < 0) return EAGAIN; } @@ -512,9 +513,10 @@ int __pthread_create_2_1(pthread_t *thread, const pthread_attr_t *attr, &request.req_args.create.mask); __libc_write(__pthread_manager_request, (char *) &request, sizeof(request)); suspend(self); - if (THREAD_GETMEM(self, p_retcode) == 0) + retval = THREAD_GETMEM(self, p_retcode; + if (retval == 0) *thread = (pthread_t) THREAD_GETMEM(self, p_retval); - return THREAD_GETMEM(self, p_retcode); + return retval; } versioned_symbol (libpthread, __pthread_create_2_1, pthread_create, GLIBC_2_1); |