fix infinite loop in writeTownToXml

This commit is contained in:
2025-06-13 11:19:31 -05:00
parent 9f95ca4fe1
commit 9e916a7f35

View File

@@ -863,9 +863,9 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) {
data.CloseElement("wandering");
}
// 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;
int last_item = town.preset_items.size() - 1;
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) {
for(int i = 0; i <= last_item; ++i) {
const cTown::cItem& item = town.preset_items[i];
data.OpenElement("item");
data.PushAttribute("id", i);
@@ -883,9 +883,9 @@ void writeTownToXml(ticpp::Printer&& data, cTown& town) {
data.CloseElement("item");
}
// 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;
int last_creature = town.creatures.size() - 1;
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) {
for(int i = 0; i <= last_creature; ++i) {
data.OpenElement("creature");
data.PushAttribute("id", i);
cTownperson& preset = town.creatures[i];