From f6f9433c415ec6d76c42b9ab9ea63ca6c4582648 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 26 Jul 2018 23:17:18 +0300 Subject: [PATCH] Fixed concurrent iterator change problems --- core/src/com/unciv/logic/civilization/CivilizationInfo.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index b1cc33e7ee..33d73e2ebc 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -144,8 +144,10 @@ class CivilizationInfo { fun getCivResources(): Counter { val civResources = Counter() - for (city in cities) civResources.add(city.getCityResources()) - for (dip in diplomacy.values) civResources.add(dip.resourcesFromTrade()) + // ToLists are so that when we update happiness on a different thread and we call this function, + // we don't modify the iterator as we're using it + for (city in cities.toList()) civResources.add(city.getCityResources()) + for (dip in diplomacy.values.toList()) civResources.add(dip.resourcesFromTrade()) return civResources }