diff options
author | jackpoz <giacomopoz@gmail.com> | 2019-04-27 13:57:46 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2019-04-27 13:57:46 +0200 |
commit | 1c833f28e471e3787f1d328e44af5f065ad9ca8c (patch) | |
tree | 21c0516a50ea0e0aa0d658a0a57b8e604bf883a6 /src | |
parent | 56b65329e5dc2fb04d5b1d6068d957490146ee89 (diff) |
Core/Maps: Fix crash caused by setActive(false) called after DespawnOrUnsummon()
Fix crash caused by WorldObject::setActive(false) called after WorldObject::DespawnOrUnsummon() happening because the WorldObject would be set as not active but then Map::RemoveFromActiveHelper() would not be called because of not being in world anymore.
Whenever setActive() gets desync'd with what Map actually contains a rare crash would happen since Map only reads a few values of the active WorldObject, making it hard to reproduce. If this happens again some ASSERT calls should be added (or a check in Map::RemoveFromMap() could be added about if the WorldObject is in Map::m_activeNonPlayers container).
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 160469f5823..b4c73e4fed0 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1001,7 +1001,7 @@ void WorldObject::setActive(bool on) m_isActive = on; - if (!IsInWorld()) + if (on && !IsInWorld()) return; Map* map = FindMap(); |