Commit 99a0376a authored by Jason Edmeades's avatar Jason Edmeades Committed by Alexandre Julliard

kernel32: Return error on second attempt to free a module.

parent 10f6d5c1
......@@ -1003,8 +1003,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH FreeLibrary(HINSTANCE hLibModule)
{
/* this is a LOAD_LIBRARY_AS_DATAFILE module */
char *ptr = (char *)hLibModule - 1;
UnmapViewOfFile( ptr );
return TRUE;
return UnmapViewOfFile( ptr );
}
if ((nts = LdrUnloadDll( hLibModule )) == STATUS_SUCCESS) retv = TRUE;
......
......@@ -359,6 +359,24 @@ static void testLoadLibraryEx(void)
ok(GetLastError() == ERROR_FILE_NOT_FOUND ||
broken(GetLastError() == ERROR_INVALID_HANDLE), /* nt4 */
"Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError());
/* Free the loaded dll when its the first time this dll is loaded
in process - First time should pass, second fail */
SetLastError(0xdeadbeef);
hmodule = LoadLibraryExA("comctl32.dll", NULL, LOAD_LIBRARY_AS_DATAFILE);
ok(hmodule != 0, "Expected valid module handle\n");
SetLastError(0xdeadbeef);
ok(FreeLibrary(hmodule),
"Expected to be able to free the module, failed with %d\n",
GetLastError());
SetLastError(0xdeadbeef);
ok(!FreeLibrary(hmodule),
"Unexpected ability to free the module, failed with %d\n",
GetLastError());
CloseHandle(hmodule);
}
START_TEST(module)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment