don't modify container while iterating

develop
Myk Taylor 2023-07-21 16:39:36 -07:00
parent ac8211a9c7
commit 383966511d
No known key found for this signature in database
GPG Key ID: 8A39CA0FA0C16E78
2 changed files with 7 additions and 4 deletions

@ -122,6 +122,7 @@ static df::building_stockpilest* find_stockpile(int32_t stockpile_number) {
static void validate_stockpile_configs(color_ostream& out, static void validate_stockpile_configs(color_ostream& out,
unordered_map<df::building_stockpilest *, PersistentDataItem> &cache) { unordered_map<df::building_stockpilest *, PersistentDataItem> &cache) {
vector<int> to_remove;
for (auto& entry : watched_stockpiles) { for (auto& entry : watched_stockpiles) {
int stockpile_number = entry.first; int stockpile_number = entry.first;
PersistentDataItem &c = entry.second; PersistentDataItem &c = entry.second;
@ -129,13 +130,15 @@ static void validate_stockpile_configs(color_ostream& out,
if (!bld || ( if (!bld || (
!get_config_bool(c, STOCKPILE_CONFIG_MELT) && !get_config_bool(c, STOCKPILE_CONFIG_MELT) &&
!get_config_bool(c, STOCKPILE_CONFIG_TRADE) && !get_config_bool(c, STOCKPILE_CONFIG_TRADE) &&
!get_config_bool(c, STOCKPILE_CONFIG_DUMP) && !get_config_bool(c, STOCKPILE_CONFIG_DUMP) &&
!get_config_bool(c, STOCKPILE_CONFIG_TRAIN))) { !get_config_bool(c, STOCKPILE_CONFIG_TRAIN))) {
remove_stockpile_config(out, stockpile_number); to_remove.push_back(stockpile_number);
continue; continue;
} }
cache.emplace(bld, c); cache.emplace(bld, c);
} }
for (int stockpile_number : to_remove)
remove_stockpile_config(out, stockpile_number);
} }
// remove this function once saves from 50.08 are no longer compatible // remove this function once saves from 50.08 are no longer compatible

@ -75,7 +75,7 @@ local function print_status()
print(('Total items marked for melting: %5d'):format(global_stats.total_melt)) print(('Total items marked for melting: %5d'):format(global_stats.total_melt))
print(('Total items marked for trading: %5d'):format(global_stats.total_trade)) print(('Total items marked for trading: %5d'):format(global_stats.total_trade))
print(('Total items marked for dumping: %5d'):format(global_stats.total_dump)) print(('Total items marked for dumping: %5d'):format(global_stats.total_dump))
print(('Total animals marked for training: %5d'):format(global_stats.total_train)) print(('Total animals marked for training: %2d'):format(global_stats.total_train))
end end
local function for_stockpiles(opts, fn) local function for_stockpiles(opts, fn)