From 9efba84ba96b4d8ebfd81ebae6d02688e34d36ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 4 Dec 2017 17:46:41 +0100 Subject: [PATCH] [poincare] Avoid infinite loop in binomial/permute coefficients Change-Id: I528bf2a4fcfb269511aa9128990807524e9c3945 --- poincare/src/binomial_coefficient.cpp | 2 +- poincare/src/permute_coefficient.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poincare/src/binomial_coefficient.cpp b/poincare/src/binomial_coefficient.cpp index b1d947a48..dfabebd51 100644 --- a/poincare/src/binomial_coefficient.cpp +++ b/poincare/src/binomial_coefficient.cpp @@ -100,7 +100,7 @@ Expression * BinomialCoefficient::templatedApproximate(Context& context, AngleUn T result = 1; for (int i = 0; i < k; i++) { result *= (n-(T)i)/(k-(T)i); - if (std::isinf(result)) { + if (std::isinf(result) || std::isnan(result)) { return new Complex(Complex::Float(result)); } } diff --git a/poincare/src/permute_coefficient.cpp b/poincare/src/permute_coefficient.cpp index 4ecc692ef..fd4536e97 100644 --- a/poincare/src/permute_coefficient.cpp +++ b/poincare/src/permute_coefficient.cpp @@ -87,7 +87,7 @@ Complex * PermuteCoefficient::templatedApproximate(Context& context, AngleUni T result = 1; for (int i = (int)n-(int)k+1; i <= (int)n; i++) { result *= i; - if (std::isinf(result)) { + if (std::isinf(result) || std::isnan(result)) { return new Complex(Complex::Float(result)); } }