]> 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)
ext/standard/formatted_print.c
ext/standard/tests/bug49244.phpt [new file with mode: 0644]

index ad2845cea7165a87d6a325aa53a57c8f3ee9ddde..6d8facf35e417d7bf88136f59939cfdf0eb4ba39 100644 (file)
@@ -365,14 +365,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;
        }
 
@@ -455,7 +455,7 @@ php_u_sprintf_appenddouble(UChar **buffer, int *pos,
                UChar *nan = USTR_MAKE("NaN");
                is_negative = (number<0);
                php_u_sprintf_appendstring(buffer, pos, size, nan, 3, 0, padding,
-                                                                alignment, precision, is_negative, 0, always_sign);
+                                                                alignment, 3, is_negative, 0, always_sign);
                efree(nan);
                return;
        }
@@ -464,7 +464,7 @@ php_u_sprintf_appenddouble(UChar **buffer, int *pos,
                UChar *inf = USTR_MAKE("INF");
                is_negative = (number<0);
                php_u_sprintf_appendstring(buffer, pos, size, inf, 3, 0, padding,
-                                                                alignment, precision, is_negative, 0, always_sign);
+                                                                alignment, 3, is_negative, 0, always_sign);
                efree(inf);
                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