diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-10-24 11:44:52 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-10-24 11:44:52 +0200 |
commit | 714413a7694ff534855e9e5904899695eac6c9bb (patch) | |
tree | b80a3bdd220b5f6978009ac1459272e1c9b8aa45 /pthread/pt-join.c | |
parent | 959f7365fccd1c89be9938c2655eba9122171e6a (diff) |
Really use user-provided stack
* pthread/pt-create.c (__pthread_create_internal): When the user provides a
`stackaddr`, use it instead of allocating a stack.
* pthread/pt-detach.c (pthread_detach): Only deallocate the stack when it
was allocated by libpthread.
* pthread/pt-join.c (pthread_join): Likewise.
Diffstat (limited to 'pthread/pt-join.c')
-rw-r--r-- | pthread/pt-join.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/pthread/pt-join.c b/pthread/pt-join.c index 8bd2c6c..417f433 100644 --- a/pthread/pt-join.c +++ b/pthread/pt-join.c @@ -64,9 +64,11 @@ pthread_join (pthread_t thread, void **status) /* Destroy the stack, the kernel resources and the control block. */ - assert (pthread->stack); - __pthread_stack_dealloc (pthread->stackaddr, pthread->stacksize); - pthread->stack = 0; + if (pthread->stack) + { + __pthread_stack_dealloc (pthread->stackaddr, pthread->stacksize); + pthread->stack = 0; + } __pthread_thread_dealloc (pthread); |