From ebfa58bb230933c35798a83f99a7a0c95c9d2217 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 24 Sep 2004 18:20:01 +0000 Subject: (__pthread_create_2_1): Remember whether thread is created detached and if yes, do not try to free the stack in case the thread creation failed. --- nptl/pthread_create.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'nptl') diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 1430686..34cc37d 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -447,13 +447,19 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg) /* Pass the descriptor to the caller. */ *newthread = (pthread_t) pd; + /* Remember whether the thread is detached or not. In case of an + error we have to free the stacks of non-detached stillborn + threads. */ + bool is_detached = IS_DETACHED (pd); + /* Start the thread. */ err = create_thread (pd, iattr, STACK_VARIABLES_ARGS); if (err != 0) { errout: /* Something went wrong. Free the resources. */ - __deallocate_stack (pd); + if (!is_detached) + __deallocate_stack (pd); return err; } -- cgit v1.1