krnl386.exe: Preload gdi and user when thunks are being used.
authorAlexandre Julliard <julliard@winehq.org>
Sat, 13 Mar 2010 16:25:49 +0000 (17:25 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Sat, 13 Mar 2010 16:25:49 +0000 (17:25 +0100)
dlls/krnl386.exe16/ne_module.c
dlls/krnl386.exe16/thunk.c

index 49b527b448c200b57252b7bef4c535d48ddd518a..aa1c9c25e39af1d832401176bb894d4b65952246 100644 (file)
@@ -782,12 +782,9 @@ static BOOL NE_LoadDLLs( NE_MODULE *pModule )
             /* its handle in the list of DLLs to initialize.   */
             HMODULE16 hDLL;
 
-            /* special magic for gdi and user */
-            if (!NE_strcasecmp( buffer, "user" )) strcpy( buffer, "USER.EXE" );
-            else if (!NE_strcasecmp( buffer, "gdi" )) strcpy( buffer, "GDI.EXE" );
             /* Append .DLL to name if no extension present */
-            else if (!(p = strrchr( buffer, '.')) || strchr( p, '/' ) || strchr( p, '\\'))
-                strcat( buffer, ".DLL" );
+            if (!(p = strrchr( buffer, '.')) || strchr( p, '/' ) || strchr( p, '\\'))
+                    strcat( buffer, ".DLL" );
 
             if ((hDLL = MODULE_LoadModule16( buffer, TRUE, TRUE )) < 32)
             {
index 2f8562c86632f205c4f2e81a81715f57682963af..8b42619ddca77adae2cb5c36f78b055e1626986c 100644 (file)
@@ -272,6 +272,14 @@ static LPVOID _loadthunk(LPCSTR module, LPCSTR func, LPCSTR module32,
     struct ThunkDataCommon *TD16;
     HMODULE16 hmod;
     int ordinal;
+    static int done;
+
+    if (!done)
+    {
+        LoadLibrary16( "gdi.exe" );
+        LoadLibrary16( "user.exe" );
+        done = TRUE;
+    }
 
     if ((hmod = LoadLibrary16(module)) <= 32)
     {