From 1cae01b12063a26dfc30ef0c44bc0d9e509d7f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 15 Jun 2020 13:09:03 +0200 Subject: [PATCH] [apps/solver] Equation: handle circularly defined equations --- apps/solver/equation.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/solver/equation.cpp b/apps/solver/equation.cpp index ef578eac7..9c72f454e 100644 --- a/apps/solver/equation.cpp +++ b/apps/solver/equation.cpp @@ -21,7 +21,11 @@ bool Equation::containsIComplex(Context * context) const { Expression Equation::Model::standardForm(const Storage::Record * record, Context * context, bool replaceFunctionsButNotSymbols) const { Expression * returnedExpression = replaceFunctionsButNotSymbols ? &m_standardFormWithReplacedFunctionsButNotSymbols : &m_standardFormWithReplacedFunctionsAndSymbols; if (returnedExpression->isUninitialized()) { - const Expression expressionInputWithoutFunctions = Expression::ExpressionWithoutSymbols(expressionClone(record), context, replaceFunctionsButNotSymbols); + Expression expressionInputWithoutFunctions = Expression::ExpressionWithoutSymbols(expressionClone(record), context, replaceFunctionsButNotSymbols); + if (expressionInputWithoutFunctions.isUninitialized()) { + // The expression is circularly-defined + expressionInputWithoutFunctions = Undefined::Builder(); + } EmptyContext emptyContext; Context * contextToUse = replaceFunctionsButNotSymbols ? &emptyContext : context;