From 032fb9b5bad5aaab3903ceaebafa36c541539cd6 Mon Sep 17 00:00:00 2001 From: smallmodel <15067410+smallmodel@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:09:38 +0200 Subject: [PATCH] Make sure to delete all conditional objects This fixes the issue where memory would be leaked by conditionals --- code/fgame/player.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/code/fgame/player.cpp b/code/fgame/player.cpp index 5b2e1c42..e023440d 100644 --- a/code/fgame/player.cpp +++ b/code/fgame/player.cpp @@ -4973,10 +4973,25 @@ void Player::InitTorsoStateTable(void) void Player::LoadStateTable(void) { + int i; + Conditional* cond; + statemap_Legs = NULL; statemap_Torso = NULL; + // + // Free existing conditionals + // + for (i = legs_conditionals.NumObjects(); i > 0; i--) { + cond = legs_conditionals.ObjectAt(i); + delete cond; + } legs_conditionals.FreeObjectList(); + + for (i = torso_conditionals.NumObjects(); i > 0; i--) { + cond = torso_conditionals.ObjectAt(i); + delete cond; + } torso_conditionals.FreeObjectList(); statemap_Legs =