summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/autoload.cc6
2 files changed, 11 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index b9350f7c5..2ec23cf80 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -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
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index d9732765b..f6e764851 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -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. */