[10315] Make AuraHolder::IsDeleted() really work.

In fact it has been broken originally when added in Aura long before move it to AuraHolder.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
zergtmn 2010-08-04 01:35:34 +04:00 committed by VladimirMangos
parent 685edfe7e2
commit d31ce2e2a3
4 changed files with 8 additions and 6 deletions

View file

@ -7735,12 +7735,9 @@ void SpellAuraHolder::RemoveAura(SpellEffectIndex index)
void SpellAuraHolder::ApplyAuraModifiers(bool apply, bool real) void SpellAuraHolder::ApplyAuraModifiers(bool apply, bool real)
{ {
for (int32 i = 0; i < MAX_EFFECT_INDEX; ++i) for (int32 i = 0; i < MAX_EFFECT_INDEX && !IsDeleted(); ++i)
{ if (Aura *aur = GetAuraByEffectIndex(SpellEffectIndex(i)))
Aura *aur = GetAuraByEffectIndex(SpellEffectIndex(i));
if (aur)
aur->ApplyModifier(apply, real); aur->ApplyModifier(apply, real);
}
} }
void SpellAuraHolder::_AddSpellAuraHolder() void SpellAuraHolder::_AddSpellAuraHolder()

View file

@ -87,6 +87,8 @@ class MANGOS_DLL_SPEC SpellAuraHolder
bool IsDeleted() const { return m_deleted;} bool IsDeleted() const { return m_deleted;}
bool IsEmptyHolder() const; bool IsEmptyHolder() const;
void SetDeleted() { m_deleted = true; }
void SetInUse(bool state) void SetInUse(bool state)
{ {
if(state) if(state)

View file

@ -4572,7 +4572,10 @@ void Unit::RemoveSpellAuraHolder(SpellAuraHolder *holder, AuraRemoveMode mode)
// If holder in use (removed from code that plan access to it data after return) // If holder in use (removed from code that plan access to it data after return)
// store it in holder list with delayed deletion // store it in holder list with delayed deletion
if (holder->IsInUse()) if (holder->IsInUse())
{
holder->SetDeleted();
m_deletedHolders.push_back(holder); m_deletedHolders.push_back(holder);
}
else else
delete holder; delete holder;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "10314" #define REVISION_NR "10315"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__