From 5d79d93aac6aae4451191dc543c78d55232ed519 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Thu, 3 Oct 2024 15:08:18 +0300 Subject: [PATCH] engine: server: use safe cvar unlinking for mods that deallocate cvars (like HL Unified SDK) --- engine/server/sv_game.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/server/sv_game.c b/engine/server/sv_game.c index 29d53549..9ae68af9 100644 --- a/engine/server/sv_game.c +++ b/engine/server/sv_game.c @@ -5115,6 +5115,8 @@ void SV_SpawnEntities( const char *mapname ) void SV_UnloadProgs( void ) { + pending_cvar_t *pending_cvars_list; + if( !svgame.hInstance ) return; @@ -5124,6 +5126,8 @@ void SV_UnloadProgs( void ) /// SV_UnloadProgs will be disabled //Mod_ClearUserData (); + pending_cvars_list = Cvar_PrepareToUnlink( FCVAR_EXTDLL ); + if( svgame.dllFuncs2.pfnGameShutdown != NULL ) svgame.dllFuncs2.pfnGameShutdown (); @@ -5141,7 +5145,7 @@ void SV_UnloadProgs( void ) // must unlink all game cvars, // before pointers on them will be lost... - Cvar_Unlink( FCVAR_EXTDLL ); + Cvar_UnlinkPendingCvars( pending_cvars_list ); Cmd_Unlink( CMD_SERVERDLL ); SV_FreeStringPool();