diff --git a/game_launch/game.cpp b/game_launch/game.cpp index 0c7dc657..1edf09f9 100644 --- a/game_launch/game.cpp +++ b/game_launch/game.cpp @@ -141,8 +141,11 @@ static void Sys_LoadEngine( void ) static void Sys_UnloadEngine( void ) { - if( Host_Shutdown ) Host_Shutdown( ); - if( hEngine ) FreeLibrary( hEngine ); + if( Host_Shutdown ) + Host_Shutdown( ); + + if( hEngine ) + FreeLibrary( hEngine ); hEngine = NULL; Host_Main = NULL; @@ -151,31 +154,14 @@ static void Sys_UnloadEngine( void ) static void Sys_ChangeGame( const char *progname ) { - // a1ba: may never be called within engine - // if platform supports execv() function - if( !progname || !progname[0] ) - { - Launch_Error( "Sys_ChangeGame: NULL gamedir" ); - return; - } - - if( Host_Shutdown == NULL ) - { - Launch_Error( "Sys_ChangeGame: missed 'Host_Shutdown' export\n" ); - return; - } - - strncpy( szGameDir, progname, sizeof( szGameDir ) - 1 ); - - Sys_UnloadEngine(); - Sys_LoadEngine (); - Host_Main( szArgc, szArgv, szGameDir, 1, Sys_ChangeGame ); + // presence of this function tells the engine to allow change game + // but it's never called + return; } static int Sys_Start( void ) { int ret; - pfnChangeGame changeGame = NULL; #if XASH_SAILFISH const char *home = getenv( "HOME" ); @@ -190,10 +176,7 @@ static int Sys_Start( void ) Sys_LoadEngine(); - if( Host_Shutdown ) - changeGame = Sys_ChangeGame; - - ret = Host_Main( szArgc, szArgv, szGameDir, 0, XASH_DISABLE_MENU_CHANGEGAME ? NULL : changeGame ); + ret = Host_Main( szArgc, szArgv, szGameDir, 0, XASH_DISABLE_MENU_CHANGEGAME ? NULL : Sys_ChangeGame ); Sys_UnloadEngine();