]> granicus.if.org Git - php/commitdiff
- Fixed bug #49244 (Floating point NaN cause garbage characters). (patch by Sjoerd)
authorFelipe Pena <felipe@php.net>
Mon, 2 Nov 2009 17:37:32 +0000 (17:37 +0000)
committerFelipe Pena <felipe@php.net>
Mon, 2 Nov 2009 17:37:32 +0000 (17:37 +0000)
NEWS
ext/standard/formatted_print.c
ext/standard/tests/bug49244.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index a37691f0c1c362bf504c0aa1be204d1718c9a853..b4a40bc51f1407a5f6d9ddd3e786b7b46bdd98f8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,7 @@ PHP                                                                        NEWS
 - Fixed bug #49800 (SimpleXML allow (un)serialize() calls without warning).
   (Ilia, wmeler at wp-sa dot pl)
 - Fixed bug #49647 (DOMUserData does not exist). (Rob)
+- Fixed bug #49244 (Floating point NaN cause garbage characters). (Sjoerd)
 - Fixed bug #49224 (Compile error due to old DNS functions on AIX systems).
   (Scott)
 
index 6d3e5ad8e1ccc64bc73dda6d94034515b9c9a5f1..a55f4943f540180d3bae7c2aac4a9e1a9dc5ea94 100644 (file)
@@ -232,14 +232,14 @@ php_sprintf_appenddouble(char **buffer, int *pos,
        if (zend_isnan(number)) {
                is_negative = (number<0);
                php_sprintf_appendstring(buffer, pos, size, "NaN", 3, 0, padding,
-                                                                alignment, precision, is_negative, 0, always_sign);
+                                                                alignment, 3, is_negative, 0, always_sign);
                return;
        }
 
        if (zend_isinf(number)) {
                is_negative = (number<0);
                php_sprintf_appendstring(buffer, pos, size, "INF", 3, 0, padding,
-                                                                alignment, precision, is_negative, 0, always_sign);
+                                                                alignment, 3, is_negative, 0, always_sign);
                return;
        }
 
diff --git a/ext/standard/tests/bug49244.phpt b/ext/standard/tests/bug49244.phpt
new file mode 100644 (file)
index 0000000..1ba24fb
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Bug #49244 (Floating point NaN cause garbage characters)
+--FILE--
+<?php
+
+for ($i = 0; $i < 10; $i++) {
+       printf("{%f} %1\$f\n", pow(-1.0, 0.3));
+       printf(b"{%f} %1\$f\n", pow(-1.0, 0.3));
+}
+
+?>
+--EXPECT--
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN
+{NaN} NaN