Fix for EntityList::CheckSpawnQueue() debug assertion failure crash

This commit is contained in:
Uleat 2015-05-15 22:49:59 -04:00
parent 4b7871a665
commit 2308d3e880
2 changed files with 12 additions and 3 deletions

View File

@ -1,5 +1,8 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50) EQEMu Changelog (Started on Sept 24, 2003 15:50)
------------------------------------------------------- -------------------------------------------------------
== 05/15/2015 ==
Uleat: Added check to EntityList::CheckSpawnQueue() to bypass dereference if returned iterator is npc_list.end() - should fix the debug assertion failure crash
== 04/30/2015 == == 04/30/2015 ==
demonstar55: Implement mob and client melee push demonstar55: Implement mob and client melee push
You can set Combat:MeleePush to false to turn off or change Combat:MeleePushChance to increase the chance an NPC can be pushed You can set Combat:MeleePush to false to turn off or change Combat:MeleePushChance to increase the chance an NPC can be pushed

View File

@ -736,9 +736,15 @@ void EntityList::CheckSpawnQueue()
Mob::CreateSpawnPacket(outapp, ns); Mob::CreateSpawnPacket(outapp, ns);
QueueClients(0, outapp); QueueClients(0, outapp);
auto it = npc_list.find(ns->spawn.spawnId); auto it = npc_list.find(ns->spawn.spawnId);
NPC *pnpc = it->second; if (it == npc_list.end()) {
pnpc->SendArmorAppearance(); // We must of despawned, hope that's the reason!
pnpc->SetAppearance(pnpc->GetGuardPointAnim(),false); Log.Out(Logs::General, Logs::Error, "Error in EntityList::CheckSpawnQueue: Unable to find NPC for spawnId '%u'", ns->spawn.spawnId);
}
else {
NPC *pnpc = it->second;
pnpc->SendArmorAppearance();
pnpc->SetAppearance(pnpc->GetGuardPointAnim(), false);
}
safe_delete(outapp); safe_delete(outapp);
iterator.RemoveCurrent(); iterator.RemoveCurrent();
} }