aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2019-04-27 13:57:46 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-02 00:39:20 +0100
commitdd825c56148ed9530e4a314bc91f29ddc86b7122 (patch)
tree22ce4cdbc2252a5d8aaf9303a978d4175f3ad7d4 /src
parent36e009baf2d37fe79c5298e68fb1b00b174624a2 (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). (cherry picked from commit 1c833f28e471e3787f1d328e44af5f065ad9ca8c)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
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 3408ab5bf35..729e4d5d9ca 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -828,7 +828,7 @@ void WorldObject::setActive(bool on)
m_isActive = on;
- if (!IsInWorld())
+ if (on && !IsInWorld())
return;
Map* map = FindMap();