From 2eae7c43ffc9627cd9fd87f94fcdf8093892f903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Wed, 26 Oct 2016 12:23:41 +0200 Subject: [PATCH] [poincare] Handle inf and nan when convert float in string Change-Id: I2121a8030d044984235e48ad50a3c6ec9e06c31e --- poincare/src/float.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/poincare/src/float.cpp b/poincare/src/float.cpp index 7ad2c1be2..48ea47cfa 100644 --- a/poincare/src/float.cpp +++ b/poincare/src/float.cpp @@ -67,9 +67,16 @@ void Float::convertFloatToText(char * buffer, int bufferSize, * worst case has the form -1.999999e-38 (7+6+1 char). */ assert(bufferSize > 6 + numberOfDigitsInMantissa); - // TO DO: if (isinf(m_float)) { - float maximalFloat = 3.4f*powf(10, 38); - if (m_float > maximalFloat || m_float < -maximalFloat) { + if (isinf(m_float)) { + buffer[0] = m_float > 0 ? '+' : '-'; + buffer[1] = 'I'; + buffer[2] = 'n'; + buffer[3] = 'f'; + buffer[4] = 0; + return; + } + + if (isnan(m_float)) { buffer[0] = 'N'; buffer[1] = 'a'; buffer[2] = 'N';