*Try to fix a crash caused by corpse. Thanks to new001.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-08-26 18:11:14 -05:00
parent 3cf8ae345c
commit 185219d087
2 changed files with 17 additions and 1 deletions

View File

@@ -309,7 +309,7 @@ void InstanceSaveManager::CleanupInstances()
delete result;
}
// gameobject_respawn
// characters
result = CharacterDatabase.Query("SELECT DISTINCT(instance_id) FROM characters WHERE instance_id <> 0");
if( result )
{
@@ -323,6 +323,20 @@ void InstanceSaveManager::CleanupInstances()
delete result;
}
// corpse
result = CharacterDatabase.Query("SELECT DISTINCT(instance) FROM corpse WHERE instance <> 0");
if( result )
{
do
{
Field *fields = result->Fetch();
if(InstanceSet.find(fields[0].GetUInt32()) == InstanceSet.end())
CharacterDatabase.PExecute("UPDATE corpse SET instance = '0' WHERE instance = '%u'", fields[0].GetUInt32());
}
while (result->NextRow());
delete result;
}
bar.step();
sLog.outString();
sLog.outString( ">> Initialized %u instances", (uint32)InstanceSet.size());

View File

@@ -157,6 +157,8 @@ void LoadHelper(CellCorpseSet const& cell_corpses, CellPair &cell, CorpseMapType
// TODO: this is a hack
// corpse's map should be reset when the map is unloaded
// but it may still exist when the grid is unloaded but map is not
// in that case map == currMap
obj->SetMap(map);
AddObjectHelper(cell, m, count, map, obj);