From 36110902fa3148904cb108f0ed51f9477dc11024 Mon Sep 17 00:00:00 2001 From: myk002 Date: Thu, 12 Nov 2020 00:11:13 -0800 Subject: [PATCH] don't use cached iterators across map reloads --- plugins/buildingplan.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/buildingplan.cpp b/plugins/buildingplan.cpp index 2d1785579..dedc89f62 100644 --- a/plugins/buildingplan.cpp +++ b/plugins/buildingplan.cpp @@ -457,6 +457,11 @@ struct buildingplan_query_hook : public df::viewscreen_dwarfmodest } } + static void invalidateStatics() + { + bld = NULL; + } + bool handleInput(set *input) { if (!isInPlannedBuildingQueryMode() || Gui::inRenameBuilding()) @@ -583,6 +588,11 @@ struct buildingplan_place_hook : public df::viewscreen_dwarfmodest } } + static void invalidateStatics() + { + key = BuildingTypeKey(); + } + bool handleInput(set *input) { if (!isInPlannedBuildingPlacementMode()) @@ -959,6 +969,8 @@ DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_chan { switch (event) { case SC_MAP_LOADED: + buildingplan_place_hook::invalidateStatics(); + buildingplan_query_hook::invalidateStatics(); planner.reset(); roomMonitor.reset(out); break;