From 88c42d50f2360692bde4ac6dfd6b31af775548ed Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 13 Nov 2024 23:34:50 +0300 Subject: [PATCH] engine: server: always allocate svgame.stringspool, it's used to track temp string allocations like in SV_CopyString Potentially fixes memory leakage on 64-bit when game uses instanced baselines or consistency lists --- engine/server/sv_game.c | 5 ++--- engine/server/sv_init.c | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/engine/server/sv_game.c b/engine/server/sv_game.c index b1f412fc..23c98451 100644 --- a/engine/server/sv_game.c +++ b/engine/server/sv_game.c @@ -3029,8 +3029,6 @@ void SV_EmptyStringPool( qboolean clear_stats ) str64.numdups = 0; str64.numoverflows = 0; } -#else // !XASH_64BIT - Mem_EmptyPool( svgame.stringspool ); #endif // !XASH_64BIT } @@ -3153,9 +3151,10 @@ static void SV_AllocStringPool( void ) str64.plast = (byte*)ptr + 1; svgame.globals->pStringBase = ptr; #else // !XASH_64BIT - svgame.stringspool = Mem_AllocPool( "Server Strings" ); svgame.globals->pStringBase = ""; #endif // !XASH_64BIT + + svgame.stringspool = Mem_AllocPool( "Server Strings" ); } static void SV_FreeStringPool( void ) diff --git a/engine/server/sv_init.c b/engine/server/sv_init.c index a880e182..199ee136 100644 --- a/engine/server/sv_init.c +++ b/engine/server/sv_init.c @@ -716,6 +716,7 @@ void SV_DeactivateServer( void ) PM_ClearPhysEnts( svgame.pmove ); SV_EmptyStringPool( true ); + Mem_EmptyPool( svgame.stringspool ); for( i = 0; i < svs.maxclients; i++ ) {