From 8765065b705c93ca4e1ce35dd241db87a496125e Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Fri, 3 Mar 2017 16:12:40 -0800 Subject: [PATCH] Bug 513105 - NPE in BuiltinOperators. due to CPPTemplateNonTypeArgument.getNonTypeValue() passing null to ICPPEvaluation.getValue() Stopgap measure to protect against NPE. Change-Id: I1f34a219f982eec3703dc82ef54996a4c454568f --- .../core/dom/parser/cpp/semantics/BuiltinOperators.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BuiltinOperators.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BuiltinOperators.java index be417e3e2c7..95152a50792 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BuiltinOperators.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/BuiltinOperators.java @@ -30,6 +30,7 @@ import org.eclipse.cdt.core.dom.ast.IEnumeration; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IPointerType; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.ISemanticProblem; import org.eclipse.cdt.core.dom.ast.IType; @@ -48,6 +49,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPBuiltinParameter; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionType; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPImplicitFunction; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPReferenceType; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPScope; import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPEvaluation; import org.eclipse.cdt.internal.core.dom.parser.cpp.OverloadableOperator; @@ -82,7 +84,9 @@ class BuiltinOperators { BuiltinOperators(OverloadableOperator operator, ICPPEvaluation[] args, IASTNode point, Object[] globCandidates) { - fFileScope= point.getTranslationUnit().getScope(); + fFileScope= point == null ? + new CPPScope.CPPScopeProblem(null, IProblemBinding.SEMANTIC_BAD_SCOPE) : + point.getTranslationUnit().getScope(); fOperator= operator; fPoint = point; fUnary= args.length < 2; @@ -91,7 +95,6 @@ class BuiltinOperators { IType type= args[0].getType(point); if (!(type instanceof ISemanticProblem)) fType1= type; - } if (args.length > 1) { IType type= args[1].getType(point);