From 82551174d95293e22b9edf3afee23cc1d30df010 Mon Sep 17 00:00:00 2001 From: "wagic.the.homebrew@gmail.com" Date: Wed, 23 Sep 2009 06:56:05 +0000 Subject: [PATCH] Erwan - Fix issue 30 (memory leaks in GuiCombat.cpp) --- projects/mtg/include/DamagerDamaged.h | 1 + projects/mtg/src/DamagerDamaged.cpp | 5 +++++ projects/mtg/src/GuiCombat.cpp | 3 --- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/projects/mtg/include/DamagerDamaged.h b/projects/mtg/include/DamagerDamaged.h index 97fcdebc0..8819846bc 100644 --- a/projects/mtg/include/DamagerDamaged.h +++ b/projects/mtg/include/DamagerDamaged.h @@ -30,6 +30,7 @@ struct AttackerDamaged : DamagerDamaged { vector blockers; AttackerDamaged(MTGCardInstance* card, float x, float y, bool show, Player* damageSelecter); AttackerDamaged(MTGCardInstance* card, const Pos& ref, bool show, Player* damageSelecter); + ~AttackerDamaged(); }; #endif diff --git a/projects/mtg/src/DamagerDamaged.cpp b/projects/mtg/src/DamagerDamaged.cpp index 830b9b3a5..3bbb58a3c 100644 --- a/projects/mtg/src/DamagerDamaged.cpp +++ b/projects/mtg/src/DamagerDamaged.cpp @@ -88,3 +88,8 @@ void DamagerDamaged::Render(CombatStep mode) AttackerDamaged::AttackerDamaged(MTGCardInstance* card, float x, float y, bool show, Player * damageSelecter) : DamagerDamaged(card, x, y, show, damageSelecter) {} AttackerDamaged::AttackerDamaged(MTGCardInstance* card, const Pos& ref, bool show, Player * damageSelecter) : DamagerDamaged(card, ref, show, damageSelecter) {} + +AttackerDamaged::~AttackerDamaged(){ +for (vector::iterator q = blockers.begin(); q != blockers.end(); ++q) + delete(*q); +} \ No newline at end of file diff --git a/projects/mtg/src/GuiCombat.cpp b/projects/mtg/src/GuiCombat.cpp index 3e61bc4b4..889383f2b 100644 --- a/projects/mtg/src/GuiCombat.cpp +++ b/projects/mtg/src/GuiCombat.cpp @@ -33,8 +33,6 @@ GuiCombat::~GuiCombat() for (inner_iterator it = attackers.begin(); it != attackers.end(); ++it) { - for (vector::iterator q = (*it)->blockers.begin(); q != (*it)->blockers.end(); ++q) - delete(*q); delete (*it); } } @@ -370,7 +368,6 @@ int GuiCombat::receiveEventMinus(WEvent* e) { AttackerDamaged* d = *it; if (activeAtk == *it) activeAtk = NULL; - for (vector::iterator q = (*it)->blockers.begin(); q != (*it)->blockers.end(); ++q) delete(*q); attackers.erase(it); SAFE_DELETE(d); return 1;