Set last error to ERROR_PROC_NOT_FOUND in case of NULL module in GetProcAddress
authorRafal Harabien <rafalh@reactos.org>
Mon, 21 Mar 2011 14:16:01 +0000 (14:16 +0000)
committerRafal Harabien <rafalh@reactos.org>
Mon, 21 Mar 2011 14:16:01 +0000 (14:16 +0000)
Check for error when freeing datafile
Fixes 2 winetests

svn path=/trunk/; revision=51104

reactos/dll/win32/kernel32/misc/ldr.c

index 6a954ae..decc300 100644 (file)
@@ -310,6 +310,12 @@ GetProcAddress( HMODULE hModule, LPCSTR lpProcName )
        FARPROC fnExp = NULL;
        NTSTATUS Status;
 
        FARPROC fnExp = NULL;
        NTSTATUS Status;
 
+       if (!hModule)
+       {
+               SetLastError(ERROR_PROC_NOT_FOUND);
+               return NULL;
+       }
+
        if (HIWORD(lpProcName) != 0)
        {
                RtlInitAnsiString (&ProcedureName,
        if (HIWORD(lpProcName) != 0)
        {
                RtlInitAnsiString (&ProcedureName,
@@ -354,8 +360,7 @@ BOOL WINAPI FreeLibrary(HINSTANCE hLibModule)
     {
         /* this is a LOAD_LIBRARY_AS_DATAFILE module */
         char *ptr = (char *)hLibModule - 1;
     {
         /* this is a LOAD_LIBRARY_AS_DATAFILE module */
         char *ptr = (char *)hLibModule - 1;
-        UnmapViewOfFile(ptr);
-        return TRUE;
+        return UnmapViewOfFile(ptr);
     }
 
     Status = LdrUnloadDll(hLibModule);
     }
 
     Status = LdrUnloadDll(hLibModule);