From 84259840ebec9794761d58b6bbd55f68b97b0518 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 19 May 2005 14:21:02 +0000 Subject: [PATCH] Refuse to load if 16-bit support is missing. --- dlls/winedos/dosexe.h | 2 +- dlls/winedos/dosmem.c | 5 +++-- dlls/winedos/dosvm.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/dlls/winedos/dosexe.h b/dlls/winedos/dosexe.h index 5def4d0c36..1aba889195 100644 --- a/dlls/winedos/dosexe.h +++ b/dlls/winedos/dosexe.h @@ -288,7 +288,7 @@ extern void WINAPI DOSVM_ASPIHandler(CONTEXT86*); extern DOSCONF *DOSCONF_GetConfig( void ); /* dosmem.c */ -extern void DOSMEM_InitDosMemory(void); +extern BOOL DOSMEM_InitDosMemory(void); extern BOOL DOSMEM_MapDosLayout(void); extern WORD DOSMEM_AllocSelector(WORD); /* FIXME: to be removed */ extern LPVOID DOSMEM_AllocBlock(UINT size, WORD* p); diff --git a/dlls/winedos/dosmem.c b/dlls/winedos/dosmem.c index f742efa611..5d7f25f33e 100644 --- a/dlls/winedos/dosmem.c +++ b/dlls/winedos/dosmem.c @@ -489,14 +489,14 @@ static void DOSMEM_InitMemory(char* addr) * * When WineDOS is loaded, initializes the current DOS memory layout. */ -void DOSMEM_InitDosMemory(void) +BOOL DOSMEM_InitDosMemory(void) { HMODULE16 hModule; unsigned short sel; LDT_ENTRY entry; DWORD reserve; - hModule = GetModuleHandle16("KERNEL"); + if (!(hModule = GetModuleHandle16("KERNEL"))) return FALSE; /* KERNEL.194: __F000H */ sel = LOWORD(GetProcAddress16(hModule, (LPCSTR)(ULONG_PTR)194)); wine_ldt_get_entry(sel, &entry); @@ -528,6 +528,7 @@ void DOSMEM_InitDosMemory(void) * Set DOS memory base and initialize conventional memory. */ DOSMEM_InitMemory(DOSMEM_dosmem + reserve); + return TRUE; } /****************************************************************** diff --git a/dlls/winedos/dosvm.c b/dlls/winedos/dosvm.c index 9adf28ed94..09caa5aaa4 100644 --- a/dlls/winedos/dosvm.c +++ b/dlls/winedos/dosvm.c @@ -703,7 +703,7 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) if (fdwReason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hinstDLL); - DOSMEM_InitDosMemory(); + if (!DOSMEM_InitDosMemory()) return FALSE; DOSVM_InitSegments(); event_notifier = CreateEventW(NULL, FALSE, FALSE, NULL);