OSDN Git Service

* dll_init.cc (dll_dllcrt0): Call _my_tls.init_exception_handler if we've
authorcgf <cgf>
Sat, 27 May 2006 18:50:04 +0000 (18:50 +0000)
committercgf <cgf>
Sat, 27 May 2006 18:50:04 +0000 (18:50 +0000)
finished initializing (Thanks to Gary Zablackis for noticing this problem).
Just use cygwin_finished_initializing rather than defining a separate variable.

winsup/cygwin/ChangeLog
winsup/cygwin/dll_init.cc

index 5b1db33..784f58e 100644 (file)
@@ -1,3 +1,10 @@
+2006-05-27  Christopher Faylor  <cgf@timesys.com>
+
+       * dll_init.cc (dll_dllcrt0): Call _my_tls.init_exception_handler if
+       we've finished initializing (Thanks to Gary Zablackis for noticing this
+       problem).  Just use cygwin_finished_initializing rather than defining a
+       separate variable.
+
 2006-05-25  Christopher Faylor  <cgf@timesys.com>
 
        * debug.h (ModifyHandle): Define new macro.
index b1aceec..418cb52 100644 (file)
@@ -351,11 +351,13 @@ dll_list::load_after_fork (HANDLE parent, dll *first)
 extern "C" int
 dll_dllcrt0 (HMODULE h, per_process *p)
 {
+  if (cygwin_finished_initializing)
+    _my_tls.init_exception_handler (_cygtls::handle_exceptions);
+
   if (p == NULL)
     p = &__cygwin_user_data;
   else
     *(p->impure_ptr_ptr) = __cygwin_user_data.impure_ptr;
-  bool initializing = in_forkee || cygwin_finished_initializing;
 
   /* Partially initialize Cygwin guts for non-cygwin apps. */
   if (dynamically_loaded && user_data->magic_biscuit == 0)
@@ -369,7 +371,7 @@ dll_dllcrt0 (HMODULE h, per_process *p)
      initializing, then the DLL must be a cygwin-aware DLL
      that was explicitly linked into the program rather than
      a dlopened DLL. */
-  if (!initializing)
+  if (cygwin_finished_initializing)
     type = DLL_LINK;
   else
     {
@@ -385,7 +387,7 @@ dll_dllcrt0 (HMODULE h, per_process *p)
      initialize the DLL.  If we haven't finished initializing,
      it may not be safe to call the dll's "main" since not
      all of cygwin's internal structures may have been set up. */
-  if (!d || (initializing && !d->init ()))
+  if (!d || (cygwin_finished_initializing && !d->init ()))
     return -1;
 
   return (DWORD) d;