From dff7d999fc01a3d54044ce9cd949e26ab118137e Mon Sep 17 00:00:00 2001 From: Chris Recoskie Date: Mon, 2 May 2011 19:34:51 +0000 Subject: [PATCH] Bug 133881 - Make refreshing after building optional Fix ConcurrentModificationException in clearExclusionsForProject() --- .../cdt/core/resources/RefreshScopeManager.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshScopeManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshScopeManager.java index f5e603d1ed6..5042091ad2f 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshScopeManager.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/RefreshScopeManager.java @@ -538,19 +538,25 @@ public class RefreshScopeManager { fResourceToExclusionsMap.put(resource, exclusions); } - public void clearAllExclusions() { + public synchronized void clearAllExclusions() { if(fResourceToExclusionsMap != null) fResourceToExclusionsMap.clear(); } public synchronized void clearExclusionsForProject(IProject project) { getResourcesToExclusionsMap(); + List resourcesToRemove = new LinkedList(); + for(IResource resource : fResourceToExclusionsMap.keySet()) { IProject project2 = resource.getProject(); if(project2.equals(project)) { - fResourceToExclusionsMap.remove(resource); + resourcesToRemove.add(resource); } } + + for(IResource resource : resourcesToRemove) { + fResourceToExclusionsMap.remove(resource); + } } private synchronized void clearDataForProject(IProject project) {