engine: server: use safe cvar unlinking for mods that deallocate cvars (like HL Unified SDK)

This commit is contained in:
Alibek Omarov 2024-10-03 15:08:18 +03:00
parent 7ccf651fd0
commit 5d79d93aac

View file

@ -5115,6 +5115,8 @@ void SV_SpawnEntities( const char *mapname )
void SV_UnloadProgs( void ) void SV_UnloadProgs( void )
{ {
pending_cvar_t *pending_cvars_list;
if( !svgame.hInstance ) if( !svgame.hInstance )
return; return;
@ -5124,6 +5126,8 @@ void SV_UnloadProgs( void )
/// SV_UnloadProgs will be disabled /// SV_UnloadProgs will be disabled
//Mod_ClearUserData (); //Mod_ClearUserData ();
pending_cvars_list = Cvar_PrepareToUnlink( FCVAR_EXTDLL );
if( svgame.dllFuncs2.pfnGameShutdown != NULL ) if( svgame.dllFuncs2.pfnGameShutdown != NULL )
svgame.dllFuncs2.pfnGameShutdown (); svgame.dllFuncs2.pfnGameShutdown ();
@ -5141,7 +5145,7 @@ void SV_UnloadProgs( void )
// must unlink all game cvars, // must unlink all game cvars,
// before pointers on them will be lost... // before pointers on them will be lost...
Cvar_Unlink( FCVAR_EXTDLL ); Cvar_UnlinkPendingCvars( pending_cvars_list );
Cmd_Unlink( CMD_SERVERDLL ); Cmd_Unlink( CMD_SERVERDLL );
SV_FreeStringPool(); SV_FreeStringPool();