From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@codeweavers.com --- dlls/ntdll/loader.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index c983f6f8302..413d0efd81f 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -4276,6 +4276,8 @@ void loader_init( CONTEXT *context, void **entry ) MEMORY_BASIC_INFORMATION meminfo; WINE_MODREF *kernel32; PEB *peb = NtCurrentTeb()->Peb; + UNICODE_STRING kernelbase = RTL_CONSTANT_STRING( L"kernelbase" ); + HMODULE kernelbase_module;
NtQueryVirtualMemory( GetCurrentProcess(), LdrInitializeThunk, MemoryBasicInformation, &meminfo, sizeof(meminfo), NULL ); @@ -4310,7 +4312,8 @@ void loader_init( CONTEXT *context, void **entry ) } node_kernel32 = kernel32->ldr.DdagNode; pBaseThreadInitThunk = RtlFindExportedRoutineByName( kernel32->ldr.DllBase, "BaseThreadInitThunk" ); - pCtrlRoutine = RtlFindExportedRoutineByName( kernel32->ldr.DllBase, "CtrlRoutine" ); + if (!LdrGetDllHandleEx( 0, NULL, NULL, &kernelbase, &kernelbase_module )) + pCtrlRoutine = RtlFindExportedRoutineByName( kernelbase_module, "CtrlRoutine" );
actctx_init(); locale_init();