From c83cd28b3852c2a67662ee5ca129c442f7d71ccd Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Mon, 23 Apr 2012 04:01:19 +0000 Subject: [PATCH] Fixed concurrent list modification bug in PlayArea. --- src/main/java/forge/view/arcane/PlayArea.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/forge/view/arcane/PlayArea.java b/src/main/java/forge/view/arcane/PlayArea.java index 753ed7a6162..24b1e9e706a 100644 --- a/src/main/java/forge/view/arcane/PlayArea.java +++ b/src/main/java/forge/view/arcane/PlayArea.java @@ -23,6 +23,7 @@ import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import javax.swing.JScrollPane; @@ -393,8 +394,12 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen */ private void fillRow(final CardStackRow sourceRow, final List rows, final CardStackRow row) { int rowWidth = row.getWidth(); - while (!sourceRow.isEmpty()) { - final CardStack stack = sourceRow.get(0); + + final Iterator itr = sourceRow.iterator(); + + while (itr.hasNext()) { + final CardStack stack = (CardStack) itr.next(); + rowWidth += stack.getWidth(); if (rowWidth > this.playAreaWidth) { break; @@ -403,7 +408,8 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen && (((this.getRowsHeight(rows) - row.getHeight()) + stack.getHeight()) > this.playAreaHeight)) { break; } - row.add(sourceRow.remove(0)); + row.add(stack); + itr.remove(); } }