From 63f72f39e12c968bbfe3ec7c158de43936ec48de Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Fri, 15 Jul 2011 10:38:50 -0400 Subject: [PATCH] bug 333001: Description Scanner Info doesn't release ICProjectDescription --- .../settings/model/CProjectDescriptionManager.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index 6f6eae2dbc2..c23c8f9e6b9 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -278,6 +278,20 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { public void projectClosedRemove(IProject project) { CProjectDescriptionStorageManager.getInstance().projectClosedRemove(project); + disposeAssociatedListeners(project); + } + + private void disposeAssociatedListeners(IProject project) { + List proxyListeners = new ArrayList(); + for (ListenerDescriptor ldescriptor : fListeners) { + if (ldescriptor.fListener instanceof ScannerInfoProviderProxy) + proxyListeners.add((ScannerInfoProviderProxy) ldescriptor.fListener); + } + // avoid calling proxy.close() inside fListeners loop as it modifies the collection + for (ScannerInfoProviderProxy proxy : proxyListeners) { + if (project.equals(proxy.getProject())) + proxy.close(); + } } /**