From 6a84ba2523ff813ac558e7afadd8f4e33d8f0099 Mon Sep 17 00:00:00 2001 From: Arthur Camouseigt Date: Thu, 24 Sep 2020 15:40:37 +0200 Subject: [PATCH] [global_context.cpp] Fixing sequence bug u(n+2) = u(n+1) + u(n) + u(2) u(0) = 2 u(1) = 2 Crashed because the global context was not checking if the sequence was badly referencing itself Change-Id: I97f694955e15518bb088db50deb761d7ee09d75f --- apps/shared/global_context.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/shared/global_context.cpp b/apps/shared/global_context.cpp index b5b6d6fe2..a153c9817 100644 --- a/apps/shared/global_context.cpp +++ b/apps/shared/global_context.cpp @@ -127,7 +127,7 @@ const Expression GlobalContext::ExpressionForSequence(const SymbolAbstract & sym char unknownN[bufferSize]; Poincare::SerializationHelper::CodePoint(unknownN, bufferSize, UCodePointUnknown); float rank = symbol.childAtIndex(0).approximateWithValueForSymbol(unknownN, unknownSymbolValue, ctx, Preferences::sharedPreferences()->complexFormat(),Preferences::sharedPreferences()->angleUnit()); - if (std::floor(rank) == rank) { + if (std::floor(rank) == rank && !seq.badlyReferencesItself(ctx)) { SequenceContext sqctx(ctx, sequenceStore()); return Float::Builder(seq.evaluateXYAtParameter(rank, &sqctx).x2()); } else {