From: Ulrich Drepper Date: Thu, 23 Mar 2000 22:19:52 +0000 (+0000) Subject: (pthread_handle_create): Store ID of new thread before clone call. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=107d073a3f05699e7ba90a3a6905113238fceec9;p=thirdparty%2Fglibc.git (pthread_handle_create): Store ID of new thread before clone call. --- diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index bc3b03492da..acb332e4c28 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -412,6 +412,10 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, new_thread->p_start_args.start_routine = start_routine; new_thread->p_start_args.arg = arg; new_thread->p_start_args.mask = *mask; + /* Make the new thread ID available already now. If any of the later + functions fail we return an error value and the caller must not use + the stored thread ID. */ + *thread = new_thread_id; /* Raise priority of thread manager if needed */ __pthread_manager_adjust_prio(new_thread->p_priority); /* Do the cloning. We have to use two different functions depending @@ -484,8 +488,6 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr, /* Set pid field of the new thread, in case we get there before the child starts. */ new_thread->p_pid = pid; - /* We're all set */ - *thread = new_thread_id; return 0; }