From: Stanislav Malyshev Date: Mon, 14 Aug 2000 10:02:14 +0000 (+0000) Subject: Fix non-numbers printing (#6142) X-Git-Tag: php-4.0.2RC1~119 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=97c200b170976fd686c55511a897658b8d0e25f6;p=php 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 --- 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) {