Module: wine Branch: master Commit: 60f364068aac6844db6893320b94cc8a9477d089 URL: http://source.winehq.org/git/wine.git/?a=commit;h=60f364068aac6844db6893320b...
Author: Alexandre Julliard julliard@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) {