*Fix a crash bug caused by corpse.
--HG-- branch : trunk
This commit is contained in:
@@ -256,9 +256,14 @@ ObjectAccessor::RemoveCorpse(Corpse *corpse)
|
|||||||
{
|
{
|
||||||
assert(corpse && corpse->GetType() != CORPSE_BONES);
|
assert(corpse && corpse->GetType() != CORPSE_BONES);
|
||||||
|
|
||||||
|
if(corpse->FindMap())
|
||||||
|
corpse->FindMap()->Remove(corpse, false);
|
||||||
|
else
|
||||||
|
corpse->RemoveFromWorld();
|
||||||
|
|
||||||
Guard guard(i_corpseGuard);
|
Guard guard(i_corpseGuard);
|
||||||
Player2CorpsesMapType::iterator iter = i_player2corpse.find(corpse->GetOwnerGUID());
|
Player2CorpsesMapType::iterator iter = i_player2corpse.find(corpse->GetOwnerGUID());
|
||||||
if( iter == i_player2corpse.end() )
|
if( iter == i_player2corpse.end() ) // i do not know when it happens but it happens
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// build mapid*cellid -> guid_set map
|
// build mapid*cellid -> guid_set map
|
||||||
@@ -266,10 +271,6 @@ ObjectAccessor::RemoveCorpse(Corpse *corpse)
|
|||||||
uint32 cell_id = (cell_pair.y_coord*TOTAL_NUMBER_OF_CELLS_PER_MAP) + cell_pair.x_coord;
|
uint32 cell_id = (cell_pair.y_coord*TOTAL_NUMBER_OF_CELLS_PER_MAP) + cell_pair.x_coord;
|
||||||
|
|
||||||
objmgr.DeleteCorpseCellData(corpse->GetMapId(), cell_id, corpse->GetOwnerGUID());
|
objmgr.DeleteCorpseCellData(corpse->GetMapId(), cell_id, corpse->GetOwnerGUID());
|
||||||
if(corpse->FindMap())
|
|
||||||
corpse->FindMap()->Remove(corpse, false);
|
|
||||||
else
|
|
||||||
corpse->RemoveFromWorld();
|
|
||||||
|
|
||||||
i_player2corpse.erase(iter);
|
i_player2corpse.erase(iter);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user