From cf42513ae6ec057a63da2c278e23b9fa1668618b Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 27 Dec 2012 16:58:50 -0800 Subject: [PATCH] Bug 397205. Fixed StackOverflowError in EvalFunctionCall.getValue() --- .../core/dom/parser/cpp/semantics/EvalFunctionCall.java | 8 +++++--- 1 file changed, 5 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 03f510189bb..5636cf9bf2f 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 @@ -143,9 +143,11 @@ public class EvalFunctionCall extends CPPEvaluation { @Override public IValue getValue(IASTNode point) { ICPPEvaluation eval = computeForFunctionCall(Value.MAX_RECURSION_DEPTH, point); - if (eval instanceof EvalFixed) - return ((EvalFixed) eval).getValue(); - eval = new EvalFixed(getTypeOrFunctionSet(point), PRVALUE, eval.getValue(point)); + if (eval != this) { + if (eval instanceof EvalFixed) + return ((EvalFixed) eval).getValue(); + eval = new EvalFixed(getTypeOrFunctionSet(point), PRVALUE, eval.getValue(point)); + } return Value.create(eval); }