From 97c200b170976fd686c55511a897658b8d0e25f6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 14 Aug 2000 10:02:14 +0000 Subject: [PATCH] Fix non-numbers printing (#6142) # Please, somebody knowing about floats - check if there's more non-numbers # seems we should check for all of them --- ext/standard/formatted_print.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index f271ac9daa..1db9451928 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -252,6 +252,39 @@ php_sprintf_appenddouble(char **buffer, int *pos, } else if (precision > MAX_FLOAT_PRECISION) { precision = MAX_FLOAT_PRECISION; } + + if( +#if defined(HAVE_ISNAN) + isnan(number) +#elif defined(NAN) + number == NAN +#else + 0 +#endif + ) { + sign = (number<0); + php_sprintf_appendstring(buffer, pos, size, "NaN", 3, 0, padding, + alignment, precision, sign, 0); + return; + } + + if( +#if defined(HAVE_ISISINF) + isinf(number) +#elif defined(HAVE_ISFINITE) + !isfinite(number) +#elif defined(HAVE_FINITE) + !finite(number) +#else + 0 +#endif + ) { + sign = (number<0); + php_sprintf_appendstring(buffer, pos, size, "INF", 3, 0, padding, + alignment, precision, sign, 0); + return; + } + cvt = php_convert_to_decimal(number, precision, &decpt, &sign, (fmt == 'e')); if (sign) { -- 2.50.1