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