diff options
| author | megamage <none@none.none> | 2011-11-28 14:10:56 -0500 |
|---|---|---|
| committer | megamage <none@none.none> | 2011-11-28 14:10:56 -0500 |
| commit | 81fea2d7b51549c340866050f93e3780503112f7 (patch) | |
| tree | e1189ebed9f077388cc607625d439f9f4b0f9ebd /src | |
| parent | 529af3cd092972c2d5204308a5ba573bad8e0b1f (diff) | |
Fix some memory leak from CreateTamedPetFrom.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 6 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a4cf8e6a469..bcc791ac3fd 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3828,7 +3828,10 @@ void Spell::EffectTameCreature(SpellEffIndex /*effIndex*/) Pet* pet = m_caster->CreateTamedPetFrom(creatureTarget, m_spellInfo->Id); if (!pet) // in very specific state like near world end/etc. + { + delete pet; return; + } // "kill" original creature creatureTarget->DespawnOrUnsummon(); @@ -7014,7 +7017,10 @@ void Spell::EffectCreateTamedPet(SpellEffIndex effIndex) uint32 creatureEntry = m_spellInfo->Effects[effIndex].MiscValue; Pet* pet = unitTarget->CreateTamedPetFrom(creatureEntry, m_spellInfo->Id); if (!pet) + { + delete pet; return; + } // add to world pet->GetMap()->AddToMap(pet->ToCreature()); diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index bfa8b76f295..46b6c1cb16b 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -1131,6 +1131,7 @@ public: { handler->PSendSysMessage (LANG_CREATURE_NON_TAMEABLE, cInfo->Entry); handler->SetSentErrorMessage (true); + delete pet; return false; } |
