diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java index d615698..192d097 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/ExternalFoldersManager.java @@ -122,7 +122,7 @@ } while (result.exists()); if (scheduleForCreation) { if (this.pendingFolders == null) - this.pendingFolders = new HashSet(); + this.pendingFolders = Collections.synchronizedSet(new HashSet()); this.pendingFolders.add(externalFolderPath); } knownFolders.put(externalFolderPath, result); @@ -166,13 +166,15 @@ catch(CoreException e) { throw new JavaModelException(e); } - Iterator iterator = this.pendingFolders.iterator(); - while (iterator.hasNext()) { - Object folderPath = iterator.next(); - try { - createLinkFolder((IPath) folderPath, false, externalFoldersProject, monitor); - } catch (CoreException e) { - Util.log(e, "Error while creating a link for external folder :" + folderPath); //$NON-NLS-1$ + synchronized (this.pendingFolders) { + Iterator iterator = this.pendingFolders.iterator(); + while (iterator.hasNext()) { + Object folderPath = iterator.next(); + try { + createLinkFolder((IPath) folderPath, false, externalFoldersProject, monitor); + } catch (CoreException e) { + Util.log(e, "Error while creating a link for external folder :" + folderPath); //$NON-NLS-1$ + } } } this.pendingFolders.clear();