diff options
Diffstat (limited to 'winsup/cygwin/thread.cc')
-rw-r--r-- | winsup/cygwin/thread.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index a34cd8497..c0bdb8b0d 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -392,10 +392,14 @@ pthread::exit (void *value_ptr) (_reclaim_reent) (_REENT); + if (InterlockedDecrement (&MT_INTERFACE->threadcount) == 0) ::exit (0); else - ExitThread (0); + { + _my_tls.remove (); + ExitThread (0); + } } int |