aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none.none>2011-11-14 21:01:53 -0500
committermegamage <none@none.none>2011-11-14 21:01:53 -0500
commit10b89d976fe7ce19db8bcb1f829b3789cc9785af (patch)
tree9fd3079017e284833252a989442ac88a569b0f09 /src
parent28102c56831a88f7facdd669a65e5750e267e5b3 (diff)
A temp fix for crash caused by remove corpse.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Globals/ObjectAccessor.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp
index 7c9beb7d656..3a1b81b044d 100755
--- a/src/server/game/Globals/ObjectAccessor.cpp
+++ b/src/server/game/Globals/ObjectAccessor.cpp
@@ -199,10 +199,17 @@ void ObjectAccessor::RemoveCorpse(Corpse* corpse)
{
ASSERT(corpse && corpse->GetType() != CORPSE_BONES);
- if (corpse->IsInGrid())
+ //TODO: more works need to be done for corpse and other world object
+ if (Map* map = corpse->FindMap())
{
corpse->DestroyForNearbyPlayers();
- corpse->GetMap()->RemoveFromMap(corpse, false);
+ if (corpse->IsInGrid())
+ map->RemoveFromMap(corpse, false);
+ else
+ {
+ corpse->RemoveFromWorld();
+ corpse->ResetMap();
+ }
}
else
corpse->RemoveFromWorld();