Bugfix: don't call ExitProcess() before SYSLEVEL_Init().

This commit is contained in:
Ulrich Weigand 1999-10-23 14:15:33 +00:00 committed by Alexandre Julliard
parent ea65e29bdc
commit 8a64b83eb6
4 changed files with 18 additions and 29 deletions

View file

@ -8,7 +8,7 @@
#include "windef.h" #include "windef.h"
extern void MAIN_Usage(char*); extern void MAIN_Usage(char*);
extern BOOL MAIN_MainInit(void); extern BOOL MAIN_MainInit( int *argc, char *argv[] );
extern BOOL MAIN_WineInit( int *argc, char *argv[] ); extern BOOL MAIN_WineInit( int *argc, char *argv[] );
extern HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] ); extern HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] );
extern int MAIN_GetLanguageID(char*lang, char*country, char*charset, char*dialect); extern int MAIN_GetLanguageID(char*lang, char*country, char*charset, char*dialect);

View file

@ -57,14 +57,20 @@ DEFAULT_DEBUG_CHANNEL(server)
/*********************************************************************** /***********************************************************************
* Main initialisation routine * Main initialisation routine
*/ */
BOOL MAIN_MainInit(void) BOOL MAIN_MainInit( int *argc, char *argv[] )
{ {
/* Create the initial process */
if (!PROCESS_Init()) return 0;
/* Set server debug level */ /* Set server debug level */
CLIENT_SetDebug( TRACE_ON(server) ); CLIENT_SetDebug( TRACE_ON(server) );
/* Initialize syslevel handling */ /* Initialize syslevel handling */
SYSLEVEL_Init(); SYSLEVEL_Init();
/* Parse command line arguments */
MAIN_WineInit( argc, argv );
/* Load the configuration file */ /* Load the configuration file */
if (!PROFILE_LoadWineIni()) return FALSE; if (!PROFILE_LoadWineIni()) return FALSE;
@ -98,6 +104,10 @@ BOOL MAIN_MainInit(void)
/* Read DOS config.sys */ /* Read DOS config.sys */
if (!DOSCONF_ReadConfig()) return FALSE; if (!DOSCONF_ReadConfig()) return FALSE;
/* Initialize KERNEL */
if (!LoadLibrary16( "KRNL386.EXE" )) return FALSE;
if (!LoadLibraryA( "KERNEL32" )) return FALSE;
return TRUE; return TRUE;
} }
@ -288,18 +298,8 @@ HINSTANCE MAIN_WinelibInit( int *argc, char *argv[] )
OFSTRUCT ofs; OFSTRUCT ofs;
HMODULE16 hModule; HMODULE16 hModule;
/* Create the initial process */
if (!PROCESS_Init()) return 0;
/* Parse command line arguments */
MAIN_WineInit( argc, argv );
/* Main initialization */ /* Main initialization */
if (!MAIN_MainInit()) return 0; if (!MAIN_MainInit( argc, argv )) return 0;
/* Initialize KERNEL */
if (!LoadLibrary16( "KRNL386.EXE" )) return 0;
if (!LoadLibraryA( "KERNEL32" )) return 0;
/* Create and switch to initial task */ /* Create and switch to initial task */
if (!(wm = ELF_CreateDummyModule( argv[0], argv[0] ))) if (!(wm = ELF_CreateDummyModule( argv[0], argv[0] )))

View file

@ -115,25 +115,13 @@ int main( int argc, char *argv[] )
*/ */
DEBUG_argv0 = argv[0]; DEBUG_argv0 = argv[0];
/* Create the initial process */
if (!PROCESS_Init()) return FALSE;
/* Parse command-line */
if (!MAIN_WineInit( &argc, argv )) return 1;
MAIN_argc = argc; MAIN_argv = argv;
/* Set up debugger hook */ /* Set up debugger hook */
EXC_SetDebugEventHook( wine_debugger ); EXC_SetDebugEventHook( wine_debugger );
TASK_AddTaskEntryBreakpoint = DEBUG_AddTaskEntryBreakpoint;
if (Options.debug)
TASK_AddTaskEntryBreakpoint = DEBUG_AddTaskEntryBreakpoint;
/* Initialize everything */ /* Initialize everything */
if (!MAIN_MainInit()) return 1; if (!MAIN_MainInit( &argc, argv )) return 1;
MAIN_argc = argc; MAIN_argv = argv;
/* Load kernel modules */
if (!LoadLibrary16( "KRNL386.EXE" )) return 1;
if (!LoadLibraryA( "KERNEL32" )) return 1;
/* Create initial task */ /* Create initial task */
if ( !(pModule = NE_GetPtr( GetModuleHandle16( "KERNEL" ) )) ) return 1; if ( !(pModule = NE_GetPtr( GetModuleHandle16( "KERNEL" ) )) ) return 1;

View file

@ -23,6 +23,7 @@
#include "pe_image.h" #include "pe_image.h"
#include "task.h" #include "task.h"
#include "server.h" #include "server.h"
#include "options.h"
#include "callback.h" #include "callback.h"
#include "debugtools.h" #include "debugtools.h"
@ -482,7 +483,7 @@ void PROCESS_Start(void)
} }
/* If requested, add entry point breakpoint */ /* If requested, add entry point breakpoint */
if ( TASK_AddTaskEntryBreakpoint ) if ( Options.debug && TASK_AddTaskEntryBreakpoint )
TASK_AddTaskEntryBreakpoint( pdb->task ); TASK_AddTaskEntryBreakpoint( pdb->task );
/* Now call the entry point */ /* Now call the entry point */