Bug 571745 - Prevent NPE when engine is cleared earlier than expected
Change-Id: Iad7c17de671beff7339e8d7db3e25453072c9795
Signed-off-by: Gunnar Wagenknecht <gunnar@wagenknecht.org>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractTemplateCompletionProposalComputer.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractTemplateCompletionProposalComputer.java
index bf1c401..99c2e50 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractTemplateCompletionProposalComputer.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AbstractTemplateCompletionProposalComputer.java
@@ -68,20 +68,20 @@
return Collections.emptyList();
}
- fEngine= computeCompletionEngine(javaContext);
- if (fEngine == null) {
+ TemplateEngine engine= fEngine= computeCompletionEngine(javaContext);
+ if (engine == null) {
return Collections.emptyList();
}
- fEngine.reset();
+ engine.reset();
ITextSelection viewerSelection= context.getTextSelection();
if (viewerSelection == null) {
viewerSelection = new TextSelection(context.getDocument(), context.getInvocationOffset(), 0);
}
Point selectionAsPoint = new Point(viewerSelection.getOffset(), viewerSelection.getLength());
- fEngine.complete(javaContext.getViewer(), selectionAsPoint, javaContext.getInvocationOffset(), unit);
+ engine.complete(javaContext.getViewer(), selectionAsPoint, javaContext.getInvocationOffset(), unit);
- TemplateProposal[] templateProposals= fEngine.getResults();
+ TemplateProposal[] templateProposals= engine.getResults();
List<ICompletionProposal> result= new ArrayList<>(Arrays.asList(templateProposals));
IJavaCompletionProposal[] keyWordResults= javaContext.getKeywordProposals();
@@ -142,8 +142,9 @@
@Override
public void sessionEnded() {
- if (fEngine != null) {
- fEngine.reset();
+ TemplateEngine engine= fEngine;
+ if (engine != null) {
+ engine.reset();
fEngine= null;
}
}