mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Corpses: Prevent deleting corpses by ObjectGridUnloader, fixes accessing freed memory in multiple places due to the corpse still being registered in Map containers
Closes #15775
Closes #15781
(cherry picked from commit a94bdd00a9)
This commit is contained in:
@@ -153,7 +153,12 @@ void ObjectWorldLoader::Visit(CorpseMapType& /*m*/)
|
||||
for (Corpse* corpse : *corpses)
|
||||
{
|
||||
corpse->AddToWorld();
|
||||
i_grid.GetGridType(i_cell.CellX(), i_cell.CellY()).AddWorldObject(corpse);
|
||||
GridType& cell = i_grid.GetGridType(i_cell.CellX(), i_cell.CellY());
|
||||
if (corpse->IsWorldObject())
|
||||
cell.AddWorldObject(corpse);
|
||||
else
|
||||
cell.AddGridObject(corpse);
|
||||
|
||||
++i_corpses;
|
||||
}
|
||||
}
|
||||
@@ -231,7 +236,7 @@ void ObjectGridCleaner::Visit(GridRefManager<T> &m)
|
||||
template void ObjectGridUnloader::Visit(CreatureMapType &);
|
||||
template void ObjectGridUnloader::Visit(GameObjectMapType &);
|
||||
template void ObjectGridUnloader::Visit(DynamicObjectMapType &);
|
||||
template void ObjectGridUnloader::Visit(CorpseMapType &);
|
||||
|
||||
template void ObjectGridUnloader::Visit(AreaTriggerMapType &);
|
||||
template void ObjectGridCleaner::Visit(CreatureMapType &);
|
||||
template void ObjectGridCleaner::Visit<GameObject>(GameObjectMapType &);
|
||||
|
||||
Reference in New Issue
Block a user