From 3786526ea849a4b7daba6ca5609bf8c4445c894e Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Mon, 2 Jun 2003 21:22:02 +0000 Subject: * cygthread.h (cygthread::terminate_thread): Mark private. * cygthread.cc (cygthread::terminate_thread): Deallocate free_range thread stuff. --- winsup/cygwin/cygthread.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'winsup/cygwin/cygthread.cc') diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index e3c177e6b..4945c5bb5 100644 --- a/winsup/cygwin/cygthread.cc +++ b/winsup/cygwin/cygthread.cc @@ -258,10 +258,15 @@ cygthread::terminate_thread () system_printf ("VirtualFree of allocation base %p<%p> failed, %E", stack_ptr, m.AllocationBase); - h = NULL; - __name = NULL; - stack_ptr = NULL; - (void) InterlockedExchange (&inuse, 0); /* No longer in use */ + if (is_freerange) + free (this); + else + { + h = NULL; + __name = NULL; + stack_ptr = NULL; + (void) InterlockedExchange (&inuse, 0); /* No longer in use */ + } } /* Detach the cygthread from the current thread. Note that the -- cgit v1.2.3