diff options
author | Jakub Zelenka <bukka@php.net> | 2016-06-26 12:29:57 +0100 |
---|---|---|
committer | Jakub Zelenka <bukka@php.net> | 2016-06-26 13:26:43 +0100 |
commit | 71774c241e289e6c7a4159fe53cc832742deaa3d (patch) | |
tree | d035d255a4fbd5fb8edbc2c9f03c354632461d2d | |
parent | 75b86a2c22a5484c34acbbaa47520a05b3a6f5f0 (diff) | |
download | php-git-71774c241e289e6c7a4159fe53cc832742deaa3d.tar.gz |
Add decimal point in double serialization
-rw-r--r-- | ext/standard/var.c | 13 | ||||
-rw-r--r-- | tests/basic/precision.phpt | 2 |
2 files changed, 5 insertions, 10 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c index 7b0b5daa2b..e0938fe6e9 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -468,22 +468,17 @@ again: smart_str_append_long(buf, Z_LVAL_P(struc)); break; case IS_DOUBLE: - /* TODO: check INF, -INF and NAN in the new logic - tmp_len = spprintf(&tmp_str, 0,"%.*H", PG(serialize_precision), Z_DVAL_P(struc)); - smart_str_appendl(buf, tmp_str, tmp_len); - * Without a decimal point, PHP treats a number literal as an int. + php_gcvt(Z_DVAL_P(struc), (int)PG(serialize_precision), '.', 'E', tmp_str); + smart_str_appends(buf, tmp_str); + /* Without a decimal point, PHP treats a number literal as an int. * This check even works for scientific notation, because the * mantissa always contains a decimal point. * We need to check for finiteness, because INF, -INF and NAN * must not have a decimal point added. - * + */ if (zend_finite(Z_DVAL_P(struc)) && NULL == strchr(tmp_str, '.')) { smart_str_appendl(buf, ".0", 2); } - efree(tmp_str); - */ - php_gcvt(Z_DVAL_P(struc), (int)PG(serialize_precision), '.', 'E', tmp_str); - smart_str_appends(buf, tmp_str); break; case IS_STRING: ztmp = php_addcslashes(Z_STR_P(struc), 0, "'\\", 2); diff --git a/tests/basic/precision.phpt b/tests/basic/precision.phpt index 9c50fa7608..173b94701e 100644 --- a/tests/basic/precision.phpt +++ b/tests/basic/precision.phpt @@ -109,7 +109,7 @@ OUTPUTS 123456789 3.33333333 9.87E+102 10.0000001 string(72) "a:4:{i:0;d:123456789;i:1;d:3.33333333;i:2;d:9.87E+102;i:3;d:10.0000001;}" array ( - 0 => 123456789, + 0 => 123456789.0, 1 => 3.33333333, 2 => 9.87E+102, 3 => 10.0000001, |