OSDN Git Service

* dll_init.cc (dll_dllcrt0): Previous change didn't work very well with fork.
authorcgf <cgf>
Sat, 27 May 2006 22:55:57 +0000 (22:55 +0000)
committercgf <cgf>
Sat, 27 May 2006 22:55:57 +0000 (22:55 +0000)
Semi-revert it but change name of variable to something that makes better
sense.

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

index c2c32cb..7a964d4 100644 (file)
@@ -1,5 +1,11 @@
 2006-05-27  Christopher Faylor  <cgf@timesys.com>
 
+       * dll_init.cc (dll_dllcrt0): Previous change didn't work very well with
+       fork.  Semi-revert it but change name of variable to something that
+       makes better sense.
+
+2006-05-27  Christopher Faylor  <cgf@timesys.com>
+
        * thread.cc (verifyable_object_isvalid): Check for NULL specifically.
 
 2006-05-27  Christopher Faylor  <cgf@timesys.com>
index 670a8e7..977ca31 100644 (file)
@@ -365,6 +365,8 @@ dll_dllcrt0 (HMODULE h, per_process *p)
   else
     *(p->impure_ptr_ptr) = __cygwin_user_data.impure_ptr;
 
+  bool linking = !in_forkee && !cygwin_finished_initializing;
+
   /* Partially initialize Cygwin guts for non-cygwin apps. */
   if (dynamically_loaded && user_data->magic_biscuit == 0)
     dll_crt0 (p);
@@ -377,7 +379,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 (cygwin_finished_initializing)
+  if (linking)
     type = DLL_LINK;
   else
     {
@@ -393,7 +395,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 || (cygwin_finished_initializing && !d->init ()))
+  if (!d || (!linking && !d->init ()))
     return -1;
 
   return (DWORD) d;