From ee1d72c7f871bfc2aa77f4a776fb326ce446d6b9 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Fri, 16 Sep 2016 17:18:48 -0700 Subject: [PATCH] Bug 501615 - NPE in EvalFunctionCall.computeForFunctionCall Change-Id: I2ff67299b05b80fcc0451e1cc5b4532c88364f61 --- .../core/dom/parser/cpp/semantics/EvalFunctionCall.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java index f24bcd23f19..936b1c92f5d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionCall.java @@ -18,8 +18,6 @@ import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUti import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.REF; import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil.TDEF; -import java.util.Arrays; - import org.eclipse.cdt.core.dom.ast.IASTExpression.ValueCategory; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -48,6 +46,8 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics.LookupMode; import org.eclipse.core.runtime.CoreException; +import java.util.Arrays; + public class EvalFunctionCall extends CPPDependentEvaluation { private final ICPPEvaluation[] fArguments; private ICPPFunction fOverload = CPPFunction.UNINITIALIZED_FUNCTION; @@ -221,10 +221,13 @@ public class EvalFunctionCall extends CPPDependentEvaluation { return EvalFixed.INCOMPLETE; } + ICPPFunction functionBinding = resolveFunctionBinding(context.getPoint()); + if (functionBinding == null) + return EvalFixed.INCOMPLETE; + ICPPEvaluation[] args = new ICPPEvaluation[fArguments.length]; System.arraycopy(fArguments, 0, args, 0, fArguments.length); - ICPPFunction functionBinding = resolveFunctionBinding(context.getPoint()); ICPPParameter[] parameters = functionBinding.getParameters(); for (int i = 0; i < fArguments.length; i++) { ICPPEvaluation arg = fArguments[i].computeForFunctionCall(record, context.recordStep());