From 83ef3aa08ca0293edd8e567216dc46baead967e4 Mon Sep 17 00:00:00 2001 From: "omegablast2002@yahoo.com" Date: Wed, 1 May 2013 00:02:42 +0000 Subject: [PATCH] fixed a crash with flip cards. how does the test for this pass? --- projects/mtg/src/AllAbilities.cpp | 6 ++++-- projects/mtg/src/GameStateDuel.cpp | 10 ++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index d03a468b3..74feb77f0 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -1763,7 +1763,7 @@ int AAFlip::resolve() if (a->oneShot) { a->resolve(); - delete (a); + SAFE_DELETE(a); } else { @@ -1823,7 +1823,9 @@ int AAFlip::testDestroy() if(_target->isFlipped) { this->forceDestroy = 1; - _target->getObserver()->removeObserver(this); + //_target->getObserver()->removeObserver(this); + //originally added as a safegaurd to insure the ability was removed + //it's been so long and so much has changed that it appears to do nothing but cause a crash now _target->isFlipped = false; return 1; } diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index 235bd391f..4a288e52b 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -691,20 +691,22 @@ void GameStateDuel::Update(float dt) case DUEL_STATE_CHOOSE_DECK2_TO_PLAY: if (mParent->players[1] == PLAYER_TYPE_HUMAN) { - if (deckmenu->isClosed()) + if (deckmenu && deckmenu->isClosed()) setGamePhase(DUEL_STATE_PLAY); else - deckmenu->Update(dt); + if(deckmenu) + deckmenu->Update(dt); } else { - if (opponentMenu->isClosed()) + if (opponentMenu && opponentMenu->isClosed()) { setGamePhase(DUEL_STATE_PLAY); SAFE_DELETE(opponentMenu); } else - opponentMenu->Update(dt); + if(opponentMenu) + opponentMenu->Update(dt); } break; // this called after each match and tournament