From 0d741d0b9f9548fe540c8c1119ebbb7b55795cbc Mon Sep 17 00:00:00 2001 From: Andrea Date: Sun, 6 Dec 2020 18:43:18 +0000 Subject: [PATCH] Fix memory leak in CardManager (PR #885) --- source/CardManager.cpp | 13 ++++++++++++- source/CardManager.h | 6 +++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/source/CardManager.cpp b/source/CardManager.cpp index d71e31b1..2cb25465 100644 --- a/source/CardManager.cpp +++ b/source/CardManager.cpp @@ -120,6 +120,12 @@ void CardManager::RemoveInternal(UINT slot) m_slot[slot] = NULL; } +void CardManager::RemoveAuxInternal() +{ + delete m_aux; + m_aux = NULL; +} + void CardManager::Remove(UINT slot) { RemoveInternal(slot); @@ -131,6 +137,8 @@ void CardManager::InsertAux(SS_CARDTYPE type) if (type == CT_Empty) return RemoveAux(); + RemoveAuxInternal(); + switch (type) { case CT_80Col: @@ -146,10 +154,13 @@ void CardManager::InsertAux(SS_CARDTYPE type) _ASSERT(0); break; } + + // for consistency m_aux must never be NULL + _ASSERT(m_aux != NULL); } void CardManager::RemoveAux(void) { - delete m_aux; + RemoveAuxInternal(); m_aux = new EmptyCard; } diff --git a/source/CardManager.h b/source/CardManager.h index d7807d1d..367cafae 100644 --- a/source/CardManager.h +++ b/source/CardManager.h @@ -24,8 +24,8 @@ public: ~CardManager(void) { for (UINT i=0; i