From 60f364068aac6844db6893320b94cc8a9477d089 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sat, 13 Mar 2010 17:25:49 +0100 Subject: [PATCH] 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 49b527b448c..aa1c9c25e39 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 2f8562c8663..8b42619ddca 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) {