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