From 806794d4cef21f6a66ac456f10f77c4002b6d81c Mon Sep 17 00:00:00 2001 From: Anubisss Date: Wed, 12 Jan 2011 02:06:06 +0100 Subject: Fix a crash in Spell::CheckCast(). This crash happens when effect is SPELL_EFFECT_TALENT_SPEC_SELECT and the caster is not a player. You should always check object's type (or sure that object is 101% a player) before you use ToPlayer() casting function. Signed-off-by: Anubisss --- src/server/game/Spells/Spell.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 819ec8eb98e..9a29cd99b23 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5463,9 +5463,10 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_TALENT_SPEC_SELECT: // can't change during already started arena/battleground - if (Battleground const* bg = m_caster->ToPlayer()->GetBattleground()) - if (bg->GetStatus() == STATUS_IN_PROGRESS) - return SPELL_FAILED_NOT_IN_BATTLEGROUND; + if (m_caster->GetTypeId() == TYPEID_PLAYER) + if (Battleground const* bg = m_caster->ToPlayer()->GetBattleground()) + if (bg->GetStatus() == STATUS_IN_PROGRESS) + return SPELL_FAILED_NOT_IN_BATTLEGROUND; break; default: break; -- cgit v1.2.3