Fixed possible crash in Aura::HandleModPossessPet

Also small code cleanup.
This commit is contained in:
VladimirMangos 2008-12-09 11:47:49 +03:00
parent 6cee03bae0
commit 82cbd9152d
2 changed files with 22 additions and 15 deletions

View file

@ -1524,24 +1524,28 @@ void Pet::ToggleAutocast(uint32 spellid, bool apply)
if(apply) if(apply)
{ {
for (i = 0; i < m_autospells.size() && m_autospells[i] != spellid; i++); for (i = 0; i < m_autospells.size() && m_autospells[i] != spellid; i++)
if (i == m_autospells.size()) ; // just search
{
m_autospells.push_back(spellid); if (i == m_autospells.size())
itr->second->active = ACT_ENABLED; {
itr->second->state = PETSPELL_CHANGED; m_autospells.push_back(spellid);
} itr->second->active = ACT_ENABLED;
itr->second->state = PETSPELL_CHANGED;
}
} }
else else
{ {
AutoSpellList::iterator itr2 = m_autospells.begin(); AutoSpellList::iterator itr2 = m_autospells.begin();
for (i = 0; i < m_autospells.size() && m_autospells[i] != spellid; i++, itr2++); for (i = 0; i < m_autospells.size() && m_autospells[i] != spellid; i++, itr2++)
if (i < m_autospells.size()) ; // just search
{
m_autospells.erase(itr2); if (i < m_autospells.size())
itr->second->active = ACT_DISABLED; {
itr->second->state = PETSPELL_CHANGED; m_autospells.erase(itr2);
} itr->second->active = ACT_DISABLED;
itr->second->state = PETSPELL_CHANGED;
}
} }
} }

View file

@ -3030,8 +3030,11 @@ void Aura::HandleModPossessPet(bool apply, bool Real)
return; return;
Unit* caster = GetCaster(); Unit* caster = GetCaster();
if(!caster || caster->GetTypeId() != TYPEID_PLAYER)
return;
Pet *pet = caster->GetPet(); Pet *pet = caster->GetPet();
if(!pet || (pet != m_target) || !caster || (caster->GetTypeId() != TYPEID_PLAYER)) if(!pet || pet != m_target)
return; return;
if(apply) if(apply)