aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-10-07 19:02:59 -0500
committerSubv <s.v.h21@hotmail.com>2012-10-07 19:02:59 -0500
commit42d606a81bf347bb5bcd185d994a494c6c5dc986 (patch)
tree955609c898d7c410d8a3c0cc4e051cea2ca70b91
parent608ed2cf1df5e609977a44458f88ceb0cdba9477 (diff)
Core/Spells: Fixed a crash caused by Beacon of Light.
GroupReference sources should always be checked against NULL pointers.
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp33
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)