From: Ilia Alshanetsky Date: Mon, 4 Jun 2007 23:51:32 +0000 (+0000) Subject: Fixed bug #41567 (json_encode() double conversion is inconsistent with PHP). X-Git-Tag: php-5.2.4RC1~428 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=045b283a7d014deb38e7f8763d3ad098efce2afd;p=php Fixed bug #41567 (json_encode() double conversion is inconsistent with PHP). --- diff --git a/NEWS b/NEWS index 1a281c16e3..6a585f9cef 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,8 @@ PHP NEWS GD_RELEASE_VERSION, GD_EXTRA_VERSION and GD_VERSION_STRING. (Pierre) - Fixed bug #41576 (configure failure when using --without-apxs or some other SAPIs disabling options). (Jani) +- Fixed bug #41567 (json_encode() double conversion is inconsistent with + PHP). (Lucas, Ilia) - Fixed bug #41555 (configure failure: regression caused by fix for #41265). (Jani) - Fixed bug #41518 (file_exists() warns of open_basedir restriction on diff --git a/ext/json/json.c b/ext/json/json.c index fefdf9601e..737421f5ac 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -354,7 +354,7 @@ static void json_encode_r(smart_str *buf, zval *val TSRMLS_DC) { double dbl = Z_DVAL_P(val); if (!zend_isinf(dbl) && !zend_isnan(dbl)) { - len = spprintf(&d, 0, "%.9g", dbl); + len = spprintf(&d, 0, "%.*g", (int) EG(precision), dbl); if (d) { if (dbl > LONG_MAX && !memchr(d, '.', len)) { smart_str_append_unsigned(buf, (unsigned long)Z_DVAL_P(val)); diff --git a/ext/json/tests/bug41567.phpt b/ext/json/tests/bug41567.phpt new file mode 100644 index 0000000000..837c360a87 --- /dev/null +++ b/ext/json/tests/bug41567.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #41567 (json_encode() double conversion is inconsistent with PHP) +--FILE-- + +--EXPECT-- +float(123456789.12345) +Done