From 654dadc868d68014d80ea4625f77924cc4bfeffb Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 4 Jun 2025 10:21:03 -0500 Subject: [PATCH] fix save items/creatures without trailing empty ones --- src/scenedit/scen.fileio.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/scenedit/scen.fileio.cpp b/src/scenedit/scen.fileio.cpp index 9f0e59f5..cf548f2f 100644 --- a/src/scenedit/scen.fileio.cpp +++ b/src/scenedit/scen.fileio.cpp @@ -857,7 +857,7 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) { } // The vector may contain empty slots at the end for undo/redo purposes, but don't save them. size_t last_item = town.preset_items.size() - 1; - while(last_item >= 0 && town.preset_items[last_item].code < 0) --last_item; + while(last_item >= 0 && ((town.preset_items.size() <= last_item) || town.preset_items[last_item].code < 0)) --last_item; for(size_t i = 0; i <= last_item; ++i) { const cTown::cItem& item = town.preset_items[i]; data.OpenElement("item"); @@ -877,7 +877,7 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) { } // The vector may contain empty slots at the end for undo/redo purposes, but don't save them. size_t last_creature = town.creatures.size() - 1; - while(last_item >= 0 && town.creatures[last_creature].number <= 0) --last_creature; + while(last_creature >= 0 && ((town.creatures.size() <= last_creature) || town.creatures[last_creature].number <= 0)) --last_creature; for(size_t i = 0; i <= last_creature; ++i) { data.OpenElement("creature"); data.PushAttribute("id", i);