From 77dc367c95f40d1983d8fc1e50f8c0fe64044306 Mon Sep 17 00:00:00 2001 From: Heitor Bittencourt Date: Tue, 25 Mar 2025 01:01:09 -0300 Subject: [PATCH] Fix ConcurrentModificationException by iterating over a separate list --- forge-gui-mobile/src/forge/deck/FDeckViewer.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckViewer.java b/forge-gui-mobile/src/forge/deck/FDeckViewer.java index a398ffc9719..3d6475b53f2 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckViewer.java +++ b/forge-gui-mobile/src/forge/deck/FDeckViewer.java @@ -1,13 +1,12 @@ package forge.deck; +import java.util.ArrayList; import java.util.Map.Entry; - import forge.Forge; import forge.assets.FImage; import forge.assets.FSkinImage; import forge.assets.ImageCache; import forge.item.PaperCard; -import forge.item.PaperCardPredicates; import forge.itemmanager.CardManager; import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.filters.ItemFilter; @@ -59,14 +58,14 @@ public class FDeckViewer extends FScreen { deckList.append(s.toString()).append(": "); deckList.append(nl); int count = 0; + ArrayList accounted = new ArrayList<>(); for (final Entry ev : cp) { - count = cp.countByName(ev.getKey()); - deckList.append(count).append(" ").append(ev.getKey().getCardName()).append(nl); - if(count != ev.getValue()) + if(!accounted.contains(ev.getKey().getCardName())) { - cp.removeAll(cp.getFilteredPool(PaperCardPredicates.name(ev.getKey().getCardName()))); + count = cp.countByName(ev.getKey()); + deckList.append(count).append(" ").append(ev.getKey().getCardName()).append(nl); + accounted.add(ev.getKey().getCardName()); } - } deckList.append(nl); }