diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java index 8bd61595ba7c..89de8bd1d749 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DirDiffTableModel.java @@ -762,11 +762,12 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode } public void synchronizeSelected() { - if (!checkCanDelete()) { + List selectedElements = getSelectedElements(); + if (!checkCanDelete(selectedElements)) { return; } rememberSelection(); - for (DirDiffElementImpl element : getSelectedElements()) { + for (DirDiffElementImpl element : selectedElements) { syncElement(element); } restoreSelection(); @@ -779,19 +780,20 @@ public class DirDiffTableModel extends AbstractTableModel implements DirDiffMode } public void synchronizeAll() { - if (!checkCanDelete()) { + List elements = new ArrayList(myElements); + if (!checkCanDelete(elements)) { return; } - for (DirDiffElementImpl element : myElements.toArray(new DirDiffElementImpl[myElements.size()])) { + for (DirDiffElementImpl element : elements) { syncElement(element); } selectFirstRow(); } - private boolean checkCanDelete() { + private boolean checkCanDelete(List elements) { if (WarnOnDeletion.isWarnWhenDeleteItems()) { int count = 0; - for (DirDiffElementImpl element : myElements) { + for (DirDiffElementImpl element : elements) { if (element.getOperation() == DirDiffOperation.DELETE) { count++; }