From 78b864666eb80825545052eca631b58357097dea Mon Sep 17 00:00:00 2001 From: "wagic.jeck" Date: Wed, 17 Feb 2010 20:35:37 +0000 Subject: [PATCH] Jeck - Fix for issue 338. Please see the note in that issue for details. --- projects/mtg/src/MTGCardInstance.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 4f2c9d600..33fdc03fe 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -127,7 +127,9 @@ void MTGCardInstance::addType(int type){ bool before = hasType(type); CardPrimitive::addType(type); WEvent * e = NEW WEventCardChangeType(this,type,before,true); - GameObserver::GetInstance()->receiveEvent(e); + GameObserver * go = GameObserver::GetInstance(); + if(go) go->receiveEvent(e); + else SAFE_DELETE(e); } void MTGCardInstance::addType(char * type_text){ @@ -152,7 +154,9 @@ int MTGCardInstance::removeType(int id, int removeAll){ int result = CardPrimitive::removeType(id,removeAll); bool after = hasType(id); WEvent * e = NEW WEventCardChangeType(this,id,before,after); - GameObserver::GetInstance()->receiveEvent(e); + GameObserver * go = GameObserver::GetInstance(); + if(go) go->receiveEvent(e); + else SAFE_DELETE(e); return result; } @@ -400,7 +404,9 @@ int MTGCardInstance::setAttacker(int value){ if (attacker) previousTarget = p; attacker = value; WEvent * e = NEW WEventCreatureAttacker(this,previousTarget, target); - GameObserver::GetInstance()->receiveEvent(e); + GameObserver * go = GameObserver::GetInstance(); + if(go) go->receiveEvent(e); + else SAFE_DELETE(e); return 1; } @@ -443,7 +449,9 @@ int MTGCardInstance::raiseBlockerRankOrder(MTGCardInstance * blocker){ std::iter_swap(it1,it2); WEvent* e = NEW WEventCreatureBlockerRank(*it1,*it2,this); - GameObserver::GetInstance()->receiveEvent(e); + GameObserver * go = GameObserver::GetInstance(); + if(go) go->receiveEvent(e); + else SAFE_DELETE(e); //delete(e); return 1; }