aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/manager.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 1e39b00..ab97529 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+1999-07-09 Ulrich Drepper <drepper@cygnus.com>
+
+ * manager.c (pthread_handle_create): Free mmap region after stack
+ if clone failed. Patch by Kaz Kylheku <kaz@ashi.FootPrints.net>.
+
1999-05-23 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* man/pthread_cond_init.man: Correct example.
diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c
index f390aa1..f783bb1 100644
--- a/linuxthreads/manager.c
+++ b/linuxthreads/manager.c
@@ -379,10 +379,10 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
/* Free the stack if we allocated it */
if (attr == NULL || !attr->__stackaddr_set)
{
- munmap((caddr_t)((char *)(new_thread+1) - INITIAL_STACK_SIZE),
- INITIAL_STACK_SIZE);
if (new_thread->p_guardsize != 0)
munmap(new_thread->p_guardaddr, new_thread->p_guardsize);
+ munmap((caddr_t)((char *)(new_thread+1) - INITIAL_STACK_SIZE),
+ INITIAL_STACK_SIZE);
}
__pthread_handles[sseg].h_descr = NULL;
__pthread_handles[sseg].h_bottom = NULL;