From 9fa8d227d41aaa7436b1065ca0a2922c0bf2dfa9 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 17 May 2006 03:36:14 +0000 Subject: * 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. --- winsup/cygwin/ChangeLog | 7 +++++++ winsup/cygwin/cygtls.cc | 2 -- winsup/cygwin/init.cc | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'winsup') 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 + + * 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 * 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; } -- cgit v1.2.3