Alexandre Julliard : krnl386.exe: Preload gdi and user when thunks are being used.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 12:19:29 CDT 2010


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat Mar 13 17:25:49 2010 +0100

krnl386.exe: Preload gdi and user when thunks are being used.

---

 dlls/krnl386.exe16/ne_module.c |    7 ++-----
 dlls/krnl386.exe16/thunk.c     |    8 ++++++++
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/dlls/krnl386.exe16/ne_module.c b/dlls/krnl386.exe16/ne_module.c
index 49b527b..aa1c9c2 100644
--- a/dlls/krnl386.exe16/ne_module.c
+++ b/dlls/krnl386.exe16/ne_module.c
@@ -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)
             {
diff --git a/dlls/krnl386.exe16/thunk.c b/dlls/krnl386.exe16/thunk.c
index 2f8562c..8b42619 100644
--- a/dlls/krnl386.exe16/thunk.c
+++ b/dlls/krnl386.exe16/thunk.c
@@ -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)
     {




More information about the wine-cvs mailing list