From 3b58dfd20652780ae70f901f4a43f4864f64f519 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Mon, 18 Jul 2005 14:40:00 +0000 Subject: [PATCH] Patch for Devin Steffler. Fixed Bug 104094 [CodeReaderCache] Leaks listeners --- .../org/eclipse/cdt/core/parser/CodeReaderCache.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/CodeReaderCache.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/CodeReaderCache.java index efb7eee4143..5165e3e3393 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/CodeReaderCache.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/parser/CodeReaderCache.java @@ -52,6 +52,7 @@ public class CodeReaderCache implements ICodeReaderCache { public static final String DEFAULT_CACHE_SIZE_IN_MB_STRING = String.valueOf(DEFAULT_CACHE_SIZE_IN_MB); private static final int MB_TO_KB_FACTOR = 1024; private CodeReaderLRUCache cache = null; // the actual cache + private IResourceChangeListener listener = new UpdateCodeReaderCacheListener(this); private class UpdateCodeReaderCacheListener implements IResourceChangeListener { ICodeReaderCache c = null; @@ -126,7 +127,14 @@ public class CodeReaderCache implements ICodeReaderCache { public CodeReaderCache(int size) { cache = new CodeReaderLRUCache(size * MB_TO_KB_FACTOR); if (ResourcesPlugin.getWorkspace() != null) - ResourcesPlugin.getWorkspace().addResourceChangeListener(new UpdateCodeReaderCacheListener(this)); + ResourcesPlugin.getWorkspace().addResourceChangeListener(listener); + } + + protected void finalize() throws Throwable { + super.finalize(); + + if (ResourcesPlugin.getWorkspace() != null) + ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener); } /**