From 4890e6e7e6616fac1c554acce63bb65bf1ffcc2e Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Wed, 3 Jun 2015 18:18:57 -0700 Subject: [PATCH] Protect against an NPE. --- .../core/dom/parser/cpp/semantics/CPPFunctionSet.java | 4 ++++ .../core/dom/parser/cpp/semantics/EvalFunctionSet.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java index 8b8ec43a81c..23c00951776 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPFunctionSet.java @@ -80,6 +80,10 @@ public class CPPFunctionSet implements ICPPTwoPhaseBinding { return null; } + /** + * Returns the template arguments, or {@code null} if the function set doesn't represent a template + * specialization. + */ public ICPPTemplateArgument[] getTemplateArguments() { return fTemplateArguments; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java index 5625f2e9c2b..bae7071f614 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/EvalFunctionSet.java @@ -332,8 +332,10 @@ public class EvalFunctionSet extends CPPDependentEvaluation { int r = CPPTemplates.PACK_SIZE_NOT_FOUND; if (fFunctionSet != null) { ICPPTemplateArgument[] templateArguments = fFunctionSet.getTemplateArguments(); - for (ICPPTemplateArgument arg : templateArguments) { - r = CPPTemplates.combinePackSize(r, CPPTemplates.determinePackSize(arg, tpMap)); + if (templateArguments != null) { + for (ICPPTemplateArgument arg : templateArguments) { + r = CPPTemplates.combinePackSize(r, CPPTemplates.determinePackSize(arg, tpMap)); + } } } return r;