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;
 		}
 	}