From f862db8b9291f03030b52d08c8ba144c1171da9d Mon Sep 17 00:00:00 2001 From: QAston Date: Fri, 4 Feb 2011 02:51:12 +0100 Subject: Core/Unit: Move code using polymorphism out of CharmInfo destructor - fixes issues introduced with 38ea56952594eeac678a. --- src/server/game/Entities/Unit/Unit.cpp | 9 ++++++--- src/server/game/Entities/Unit/Unit.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 9e76e5f2def..69c88241859 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -206,7 +206,7 @@ Unit::~Unit() _DeleteRemovedAuras(); - ASSERT(!m_charmInfo); + delete m_charmInfo; delete m_vehicleKit; ASSERT(!m_duringRemoveFromWorld); @@ -13360,8 +13360,6 @@ void Unit::CleanupsBeforeDelete(bool finalCleanup) if (Creature* thisCreature = ToCreature()) if (GetTransport()) GetTransport()->RemovePassenger(thisCreature); - - DeleteCharmInfo(); } void Unit::UpdateCharmAI() @@ -13404,6 +13402,7 @@ void Unit::DeleteCharmInfo() if (!m_charmInfo) return; + m_charmInfo->RestoreState(); delete m_charmInfo; m_charmInfo = NULL; } @@ -13423,6 +13422,10 @@ CharmInfo::CharmInfo(Unit* unit) } CharmInfo::~CharmInfo() +{ +} + +void CharmInfo::RestoreState() { if (m_unit->GetTypeId() == TYPEID_UNIT) if (Creature *pCreature = m_unit->ToCreature()) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index debdc830a13..cf885ff4a98 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1027,6 +1027,7 @@ struct CharmInfo public: explicit CharmInfo(Unit* unit); ~CharmInfo(); + void RestoreState(); uint32 GetPetNumber() const { return m_petnumber; } void SetPetNumber(uint32 petnumber, bool statwindow); -- cgit v1.2.3