aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Maps/Map.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-10-29 18:46:37 +0100
committerShauren <shauren.trinity@gmail.com>2015-10-30 18:04:58 +0100
commit60370d0c030c079a523fa026def8f780a6e07b28 (patch)
treedf224e191557b6db262f7017a2b170f38cce1ca7 /src/server/game/Maps/Map.cpp
parentca1581057554fda3d9cfa1149fc08a36ea566ac5 (diff)
Core/Corpses: Fixed map crash happening during map unload when there are corpses inside
(cherry picked from commit 1d17475791cae66beafda1e2c3198a66d355086f)
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r--src/server/game/Maps/Map.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 30925fbe139..62ba6b9ff07 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -1614,11 +1614,18 @@ void Map::UnloadAll()
}
for (auto& cellCorpsePair : _corpsesByCell)
+ {
for (Corpse* corpse : cellCorpsePair.second)
+ {
+ corpse->RemoveFromWorld();
+ corpse->ResetMap();
delete corpse;
+ }
+ }
_corpsesByCell.clear();
_corpsesByPlayer.clear();
+ _corpseBones.clear();
}
// *****************************
@@ -3716,7 +3723,7 @@ Corpse* Map::ConvertCorpseToBones(ObjectGuid const& ownerGuid, bool insignia /*=
{
// Create bones, don't change Corpse
bones = new Corpse();
- bones->Create(corpse->GetGUID().GetCounter(), this);
+ bones->Create(corpse->GetGUID().GetCounter());
for (uint8 i = OBJECT_FIELD_GUID + 4; i < CORPSE_END; ++i) // don't overwrite guid
bones->SetUInt32Value(i, corpse->GetUInt32Value(i));