diff options
author | Subv <s.v.h21@hotmail.com> | 2012-10-07 19:02:59 -0500 |
---|---|---|
committer | Subv <s.v.h21@hotmail.com> | 2012-10-07 19:02:59 -0500 |
commit | 42d606a81bf347bb5bcd185d994a494c6c5dc986 (patch) | |
tree | 955609c898d7c410d8a3c0cc4e051cea2ca70b91 | |
parent | 608ed2cf1df5e609977a44458f88ceb0cdba9477 (diff) |
Core/Spells: Fixed a crash caused by Beacon of Light.
GroupReference sources should always be checked against NULL pointers.
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 54559507cf4..7c59c8421ed 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -6637,7 +6637,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere return false; triggered_spell_id = 0; Unit* beaconTarget = NULL; - if (this->GetTypeId() != TYPEID_PLAYER) + if (GetTypeId() != TYPEID_PLAYER) { beaconTarget = triggeredByAura->GetBase()->GetCaster(); if (beaconTarget == this || !(beaconTarget->GetAura(53563, victim->GetGUID()))) @@ -6647,23 +6647,24 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere } else { // Check Party/Raid Group - if (Group *group = this->ToPlayer()->GetGroup()) + if (Group* group = ToPlayer()->GetGroup()) { - for (GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) + for (GroupReference* itr = group->GetFirstMember(); itr != NULL; itr = itr->next()) { - Player* Member = itr->getSource(); - - // check if it was heal by paladin which casted this beacon of light - if (Member->GetAura(53563, victim->GetGUID())) + if (Player* member = itr->getSource()) { - // do not proc when target of beacon of light is healed - if (Member == this) - return false; + // check if it was heal by paladin which casted this beacon of light + if (member->GetAura(53563, victim->GetGUID())) + { + // do not proc when target of beacon of light is healed + if (member == this) + return false; - beaconTarget = Member; - basepoints0 = int32(damage); - triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(635)) ? 53652 : 53654; - break; + beaconTarget = member; + basepoints0 = int32(damage); + triggered_spell_id = procSpell->IsRankOf(sSpellMgr->GetSpellInfo(635)) ? 53652 : 53654; + break; + } } } } @@ -6674,8 +6675,8 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere victim->CastCustomSpell(beaconTarget, triggered_spell_id, &basepoints0, NULL, NULL, true, 0, triggeredByAura); return true; } - else - return false; + + return false; } // Judgements of the Wise if (dummySpell->SpellIconID == 3017) |