From 9c6ba05436f180b750020cf46693cc6b3c8dd04f Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 13 Jun 2002 21:54:56 +0000 Subject: [PATCH] Make builtins pretend to be loaded from the system directory. --- relay32/builtin32.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/relay32/builtin32.c b/relay32/builtin32.c index 740180b6088..36bee629c1e 100644 --- a/relay32/builtin32.c +++ b/relay32/builtin32.c @@ -87,6 +87,8 @@ static void load_library( void *base, const char *filename ) { HMODULE module = (HMODULE)base; WINE_MODREF *wm; + char *fullname; + DWORD len; if (!base) { @@ -104,14 +106,27 @@ static void load_library( void *base, const char *filename ) if (GetModuleHandleA( filename )) MESSAGE( "Warning: loading builtin %s, but native version already present. Expect trouble.\n", filename ); - /* Create 32-bit MODREF */ - if (!(wm = PE_CreateModule( module, filename, 0, 0, TRUE ))) + len = GetSystemDirectoryA( NULL, 0 ); + if (!(fullname = HeapAlloc( GetProcessHeap(), 0, len + strlen(filename) + 1 ))) { ERR( "can't load %s\n", filename ); SetLastError( ERROR_OUTOFMEMORY ); return; } - TRACE( "loaded %s %p %x\n", filename, wm, module ); + GetSystemDirectoryA( fullname, len ); + strcat( fullname, "\\" ); + strcat( fullname, filename ); + + /* Create 32-bit MODREF */ + if (!(wm = PE_CreateModule( module, fullname, 0, 0, TRUE ))) + { + ERR( "can't load %s\n", filename ); + HeapFree( GetProcessHeap(), 0, fullname ); + SetLastError( ERROR_OUTOFMEMORY ); + return; + } + TRACE( "loaded %s %p %x\n", fullname, wm, module ); + HeapFree( GetProcessHeap(), 0, fullname ); wm->refCount++; /* we don't support freeing builtin dlls (FIXME)*/ /* setup relay debugging entry points */