OSDN Git Service

* autoload.cc (dll_load): Only call LoadLibraryExW with
authorcorinna <corinna>
Sun, 27 Feb 2011 18:45:57 +0000 (18:45 +0000)
committercorinna <corinna>
Sun, 27 Feb 2011 18:45:57 +0000 (18:45 +0000)
DONT_RESOLVE_DLL_REFERENCES if a normal LoadLibrary call failed with
ERROR_INVALID_ADDRESS.
(LsaRegisterLogonProcess): Align comment to previous change.

winsup/cygwin/ChangeLog
winsup/cygwin/autoload.cc

index b9350f7..2ec23cf 100644 (file)
@@ -1,3 +1,10 @@
+2011-02-27  Corinna Vinschen  <corinna@vinschen.de>
+
+       * autoload.cc (dll_load): Only call LoadLibraryExW with
+       DONT_RESOLVE_DLL_REFERENCES if a normal LoadLibrary call failed with
+       ERROR_INVALID_ADDRESS.
+       (LsaRegisterLogonProcess): Align comment to previous change.
+
 2011-02-26  Christopher Faylor  <me+cygwin@cgf.cx>
 
        * autoload.cc: Use LoadDLLfuncEx3 for all winmm functions.  Accommodate
index d973276..f6e7648 100644 (file)
@@ -215,7 +215,9 @@ union retchain
 static bool
 dll_load (HANDLE& handle, WCHAR *name)
 {
-  HANDLE h = LoadLibraryExW (name, NULL, (in_forkee && handle) ? DONT_RESOLVE_DLL_REFERENCES : 0);
+  HANDLE h = LoadLibraryW (name);
+  if (!h && in_forkee && handle && GetLastError () == ERROR_INVALID_ADDRESS)
+    h = LoadLibraryExW (name, NULL, DONT_RESOLVE_DLL_REFERENCES);
   return h ? (handle = h) : 0;
 }
 
@@ -405,7 +407,7 @@ LoadDLLfunc (LsaFreeReturnBuffer, 4, secur32)
 LoadDLLfunc (LsaLogonUser, 56, secur32)
 LoadDLLfunc (LsaLookupAuthenticationPackage, 12, secur32)
 /* secur32 functions return NTSTATUS values.  However, the error code must
-   fit in a single byte, see LoadDLLprime.
+   fit in a single word, see LoadDLLprime.
    The calling function, lsaauth(), checks for STATUS_SUCCESS (0), so we
    simply return some arbitrary non-0 value (127 == ERROR_PROC_NOT_FOUND)
    from here, if the function can't be loaded. */