From 4ede2f8b86f53ef32b31889bccbebfbea0f1bed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 8 Nov 2018 18:00:42 +0100 Subject: [PATCH] [poincare] Add recursion protection around Exp:getPolyReducedCoefs --- poincare/src/expression.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index 0d613cb9d..cb7b88c0a 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -295,10 +295,18 @@ int Expression::defaultGetPolynomialCoefficients(Context & context, const char * } int Expression::getPolynomialReducedCoefficients(const char * symbolName, Expression coefficients[], Context & context, Preferences::AngleUnit angleUnit) const { + // Reset recursion count if needed + bool willHaveToUnlock = ResetRecursionCountAndLockReset(); + int degree = getPolynomialCoefficients(context, symbolName, coefficients); for (int i = 0; i <= degree; i++) { coefficients[i] = coefficients[i].deepReduce(context, angleUnit); } + + // Unlock recursion count reinitialization if needed + if (willHaveToUnlock) { + UnlockRecursionCountReset(); + } return degree; }