summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--ext/standard/formatted_print.c4
-rw-r--r--ext/standard/tests/bug49244.phpt32
3 files changed, 35 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index a37691f0c1..b4a40bc51f 100644
--- 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)
diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c
index 6d3e5ad8e1..a55f4943f5 100644
--- a/ext/standard/formatted_print.c
+++ b/ext/standard/formatted_print.c
@@ -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
index 0000000000..1ba24fb9b4
--- /dev/null
+++ b/ext/standard/tests/bug49244.phpt
@@ -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