Fix ReloadQuest on Shutdown crash related to encounters

Basically, EntityList::RemoveAllEncounters is called before ReloadQuests
resulting in stale pointers in the lua_encounters map.

We just have to remove the entry from the map.
This commit is contained in:
Michael Cook (mackal)
2021-02-24 01:03:38 -05:00
parent 66d24ff419
commit 43fade82e5
6 changed files with 24 additions and 0 deletions
+3
View File
@@ -602,6 +602,8 @@ void EntityList::EncounterProcess()
auto it = encounter_list.begin();
while (it != encounter_list.end()) {
if (!it->second->Process()) {
// if Process is returning false here, we probably just got called from ReloadQuests .. oh well
parse->RemoveEncounter(it->second->GetName());
safe_delete(it->second);
free_ids.push(it->first);
it = encounter_list.erase(it);
@@ -2565,6 +2567,7 @@ void EntityList::RemoveAllEncounters()
{
auto it = encounter_list.begin();
while (it != encounter_list.end()) {
parse->RemoveEncounter(it->second->GetName());
safe_delete(it->second);
free_ids.push(it->first);
it = encounter_list.erase(it);