summaryrefslogtreecommitdiffstats
path: root/winsup
diff options
context:
space:
mode:
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/cygtls.cc2
-rw-r--r--winsup/cygwin/init.cc3
3 files changed, 9 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 9291f8aa6..3ceaf4c94 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-16 Christopher Faylor <cgf@timesys.com>
+
+ * cygtls.cc (_cygtls::remove): Don't test for initialization since
+ this function will always be called when _my_tls is initialized.
+ * init.cc (dll_entry): Don't attempt to remove tls info if _my_tls is
+ obviously not even available.
+
2006-05-15 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (no_signals_available): Detect hwait_sig ==
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc
index f897ca53f..4f4fe06e2 100644
--- a/winsup/cygwin/cygtls.cc
+++ b/winsup/cygwin/cygtls.cc
@@ -147,8 +147,6 @@ _cygtls::fixup_after_fork ()
void
_cygtls::remove (DWORD wait)
{
- if (!isinitialized ())
- return;
initialized = 0;
if (!locals.exitsock || exit_state >= ES_FINAL)
return;
diff --git a/winsup/cygwin/init.cc b/winsup/cygwin/init.cc
index f73be7236..6a1575d15 100644
--- a/winsup/cygwin/init.cc
+++ b/winsup/cygwin/init.cc
@@ -156,7 +156,8 @@ dll_entry (HANDLE h, DWORD reason, void *static_load)
munge_threadfunc ();
break;
case DLL_THREAD_DETACH:
- if (hwait_sig)
+ if (hwait_sig && (void *) &_my_tls > (void *) &wow64_test_stack_marker
+ && _my_tls.isinitialized ())
_my_tls.remove (0);
break;
}