From 7c42cd76e44d416b091aa98d9fa31f2cfd0759a8 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 9 Mar 2012 17:15:22 -0500 Subject: Core/Conditions: Prevent crash at Spell::CheckCast if Condition::Meets returned prematurely --- src/server/game/Spells/Spell.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 65ab9444f58..a804c5b1b90 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4784,14 +4784,15 @@ SpellCastResult Spell::CheckCast(bool strict) // TODO: using WorldSession::SendNotification is not blizzlike if (Player* playerCaster = m_caster->ToPlayer()) { - if (playerCaster->GetSession() + // mLastFailedCondition can be NULL if there was an error processing the condition in Condition::Meets (i.e. wrong data for ConditionTarget or others) + if (playerCaster->GetSession() && condInfo.mLastFailedCondition && condInfo.mLastFailedCondition->ErrorTextId) { playerCaster->GetSession()->SendNotification(condInfo.mLastFailedCondition->ErrorTextId); return SPELL_FAILED_DONT_REPORT; } } - if (!condInfo.mLastFailedCondition->ConditionTarget) + if (!condInfo.mLastFailedCondition || !condInfo.mLastFailedCondition->ConditionTarget) return SPELL_FAILED_CASTER_AURASTATE; return SPELL_FAILED_BAD_TARGETS; } -- cgit v1.2.3