Bug 92349 - Potential memory leak: CompletionEngine retained without active content assist
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/display/DisplayCompletionProcessor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/display/DisplayCompletionProcessor.java
index e75154d..edfff26 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/display/DisplayCompletionProcessor.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/display/DisplayCompletionProcessor.java
@@ -39,9 +39,9 @@
import org.eclipse.jdt.internal.ui.text.java.JavaParameterListValidator;
import org.eclipse.jdt.internal.ui.text.template.contentassist.TemplateEngine;
import org.eclipse.jdt.internal.ui.text.template.contentassist.TemplateProposal;
-import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
-import org.eclipse.jdt.ui.text.java.CompletionProposalComparator;
import org.eclipse.jdt.ui.text.java.CompletionProposalCollector;
+import org.eclipse.jdt.ui.text.java.CompletionProposalComparator;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
@@ -98,6 +98,9 @@
* @param string message
*/
protected void setErrorMessage(String string) {
+ if (string != null && string.length() == 0) {
+ string = null;
+ }
fErrorMessage = string;
}
@@ -455,6 +458,9 @@
* Clears reference to result proposal collector.
*/
protected void releaseCollector() {
+ if (fCollector != null && fCollector.getErrorMessage().length() > 0 && fErrorMessage != null) {
+ setErrorMessage(fCollector.getErrorMessage());
+ }
fCollector = null;
}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
index 8d8d93d..bf96d68 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/snippeteditor/JavaSnippetCompletionProcessor.java
@@ -41,6 +41,7 @@
private IContextInformationValidator fValidator;
private TemplateEngine fTemplateEngine;
private CompletionProposalComparator fComparator;
+ private String fErrorMessage;
private char[] fProposalAutoActivationSet;
@@ -58,7 +59,14 @@
* @see IContentAssistProcessor#getErrorMessage()
*/
public String getErrorMessage() {
- return fCollector.getErrorMessage();
+ return fErrorMessage;
+ }
+
+ protected void setErrorMessage(String message) {
+ if (message != null && message.length() == 0) {
+ message = null;
+ }
+ fErrorMessage = message;
}
/**
@@ -90,6 +98,7 @@
*/
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int position) {
try {
+ setErrorMessage(null);
try {
fCollector = new CompletionProposalCollector(fEditor.getJavaProject());
fEditor.codeComplete(fCollector);
@@ -115,6 +124,7 @@
}
return order(results);
} finally {
+ setErrorMessage(fCollector.getErrorMessage());
fCollector = null;
}
}