From 3346366b0ebc8feb10c6a113d884b095f558998d Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 17 Jan 2022 10:31:17 +0100 Subject: Core/Auras: Fixed invalid iterator access in SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT implementation --- src/server/game/Entities/Unit/Unit.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index cde6892fd1b..5b193947b3d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7887,7 +7887,11 @@ int64 Unit::GetHealthGain(int64 dVal) void Unit::TriggerOnHealthChangeAuras(uint64 oldVal, uint64 newVal) { - for (AuraEffect const* effect : GetAuraEffectsByType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT)) + if (!HasAuraType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT)) + return; + + AuraEffectList effects = GetAuraEffectsByType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT); + for (AuraEffect const* effect : effects) { uint32 triggerHealthPct = effect->GetAmount(); uint32 triggerSpell = effect->GetSpellEffectInfo().TriggerSpell; -- cgit v1.2.3