From c0bc5f7b8fd62dfa566dd3adb91f3a1ee8db6aeb Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 23 Mar 2000 21:34:58 +0000 Subject: Update. 2000-03-23 Bruno Haible * iconv/gconv_simple.c (internal_ucs4_loop, internal_ucs4le_loop): Remove no-op pointer increment. --- linuxthreads/ChangeLog | 5 +++++ linuxthreads/manager.c | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'linuxthreads') diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 6d28f909c0..2a9683ec34 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,8 @@ +2000-03-23 Ulrich Drepper + + * manager.c (pthread_handle_create): Store ID of new thread before + clone call. + 2000-03-21 Ulrich Drepper * attr.c: Use new macros from shlib-compat.h to define versions. diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 4aa598bb9e..6e585be79c 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -415,6 +415,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 @@ -487,8 +491,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; } -- cgit 1.4.1