From 7eff81f9dbf93e6f1efbd77b2623a0ee881f82cf Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 11 Apr 2020 18:13:12 +0200 Subject: Core/Pools: Fix crash on startup (cherry picked from commit 9cde3ffd1404e784406f385061f4df0f6b429b61) --- src/server/game/Events/GameEventMgr.cpp | 2 +- src/server/game/Pools/PoolMgr.cpp | 12 ++++++------ src/server/game/Pools/PoolMgr.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 374522ae237..f2f0db87a59 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -1360,7 +1360,7 @@ void GameEventMgr::GameEventUnspawn(int16 event_id) for (IdList::iterator itr = mGameEventPoolIds[internal_event_id].begin(); itr != mGameEventPoolIds[internal_event_id].end(); ++itr) { - sPoolMgr->DespawnPool(*itr); + sPoolMgr->DespawnPool(*itr, true); } } diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index c8f410e90e7..bb5c9dfcc69 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -232,9 +232,9 @@ void PoolGroup::Despawn1Object(uint64 guid, bool alwaysDeleteRespawn // Same on one pool template<> -void PoolGroup::Despawn1Object(uint64 child_pool_id, bool /*alwaysDeleteRespawnTime*/) +void PoolGroup::Despawn1Object(uint64 child_pool_id, bool alwaysDeleteRespawnTime) { - sPoolMgr->DespawnPool(child_pool_id); + sPoolMgr->DespawnPool(child_pool_id, alwaysDeleteRespawnTime); } // Method for a pool only to remove any found record causing a circular dependency loop @@ -771,22 +771,22 @@ void PoolMgr::SpawnPool(uint32 pool_id) } // Call to despawn a pool, all gameobjects/creatures in this pool are removed -void PoolMgr::DespawnPool(uint32 pool_id) +void PoolMgr::DespawnPool(uint32 pool_id, bool alwaysDeleteRespawnTime) { { auto it = mPoolCreatureGroups.find(pool_id); if (it != mPoolCreatureGroups.end() && !it->second.isEmpty()) - it->second.DespawnObject(mSpawnedData, 0, true); + it->second.DespawnObject(mSpawnedData, 0, alwaysDeleteRespawnTime); } { auto it = mPoolGameobjectGroups.find(pool_id); if (it != mPoolGameobjectGroups.end() && !it->second.isEmpty()) - it->second.DespawnObject(mSpawnedData, 0, true); + it->second.DespawnObject(mSpawnedData, 0, alwaysDeleteRespawnTime); } { auto it = mPoolPoolGroups.find(pool_id); if (it != mPoolPoolGroups.end() && !it->second.isEmpty()) - it->second.DespawnObject(mSpawnedData); + it->second.DespawnObject(mSpawnedData, 0, alwaysDeleteRespawnTime); } } diff --git a/src/server/game/Pools/PoolMgr.h b/src/server/game/Pools/PoolMgr.h index 5ee3b295640..a37733c66fc 100644 --- a/src/server/game/Pools/PoolMgr.h +++ b/src/server/game/Pools/PoolMgr.h @@ -122,7 +122,7 @@ class TC_GAME_API PoolMgr bool CheckPool(uint32 pool_id) const; void SpawnPool(uint32 pool_id); - void DespawnPool(uint32 pool_id); + void DespawnPool(uint32 pool_id, bool alwaysDeleteRespawnTime = false); template void UpdatePool(uint32 pool_id, uint64 db_guid_or_pool_id); -- cgit v1.2.3