From 107d073a3f05699e7ba90a3a6905113238fceec9 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 23 Mar 2000 22:19:52 +0000 Subject: [PATCH] (pthread_handle_create): Store ID of new thread before clone call. --- linuxthreads/manager.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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; } -- 2.47.2