James Hawkins : kernel32: Fix two tests that fail in win2k3 and modify LoadLibraryEx to match this behavior .

Alexandre Julliard julliard at winehq.org
Wed Sep 3 07:43:31 CDT 2008


Module: wine
Branch: master
Commit: 731306bf78f2b8a6a92448e1977268b4396eb449
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=731306bf78f2b8a6a92448e1977268b4396eb449

Author: James Hawkins <jhawkins at codeweavers.com>
Date:   Tue Sep  2 01:01:59 2008 -0500

kernel32: Fix two tests that fail in win2k3 and modify LoadLibraryEx to match this behavior.

---

 dlls/kernel32/module.c       |    6 ++++++
 dlls/kernel32/tests/module.c |   19 ++++++++++---------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 86675b6..1b259e5 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -922,6 +922,12 @@ HMODULE WINAPI LoadLibraryExW(LPCWSTR libnameW, HANDLE hfile, DWORD flags)
     UNICODE_STRING      wstr;
     HMODULE             res;
 
+    if (hfile)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return 0;
+    }
+
     if (!libnameW)
     {
         SetLastError(ERROR_INVALID_PARAMETER);
diff --git a/dlls/kernel32/tests/module.c b/dlls/kernel32/tests/module.c
index ca31aaf..7b602e7 100644
--- a/dlls/kernel32/tests/module.c
+++ b/dlls/kernel32/tests/module.c
@@ -245,13 +245,12 @@ static void testLoadLibraryEx(void)
     SetLastError(0xdeadbeef);
     hmodule = LoadLibraryExA("testfile.dll", hfile, 0);
     ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
-    todo_wine
-    {
-        ok(GetLastError() == ERROR_SHARING_VIOLATION,
-           "Expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
-    }
+    ok(GetLastError() == ERROR_SHARING_VIOLATION ||
+       GetLastError() == ERROR_INVALID_PARAMETER, /* win2k3 */
+       "Expected ERROR_SHARING_VIOLATION or ERROR_INVALID_PARAMETER, got %d\n",
+       GetLastError());
 
-    /* has nothing to do with hFile */
+    /* try to open a file that is locked */
     SetLastError(0xdeadbeef);
     hmodule = LoadLibraryExA("testfile.dll", NULL, 0);
     ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
@@ -261,12 +260,14 @@ static void testLoadLibraryEx(void)
            "Expected ERROR_SHARING_VIOLATION, got %d\n", GetLastError());
     }
 
-    /* one last try with hFile */
+    /* lpFileName does not matter */
     SetLastError(0xdeadbeef);
     hmodule = LoadLibraryExA(NULL, hfile, 0);
     ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
-    ok(GetLastError() == ERROR_MOD_NOT_FOUND,
-       "Expected ERROR_MOD_NOT_FOUND, got %d\n", GetLastError());
+    ok(GetLastError() == ERROR_MOD_NOT_FOUND ||
+       GetLastError() == ERROR_INVALID_PARAMETER, /* win2k3 */
+       "Expected ERROR_MOD_NOT_FOUND or ERROR_INVALID_PARAMETER, got %d\n",
+       GetLastError());
 
     CloseHandle(hfile);
 




More information about the wine-cvs mailing list