summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/var.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 5d7301f092..ae709201ca 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -53,9 +53,11 @@ void php_var_dump(pval **struc, int level)
PHPWRITE(&buf[1], i - 1);
break;
- case IS_DOUBLE:
- i = sprintf(buf, "%*cfloat(%g)\n", level, ' ', (*struc)->value.dval);
- PHPWRITE(&buf[1], i - 1);
+ case IS_DOUBLE: {
+ ELS_FETCH();
+ i = sprintf(buf, "%*cfloat(%.*G)\n", level, ' ', (int) EG(precision), (*struc)->value.dval);
+ PHPWRITE(&buf[1], i - 1);
+ }
break;
case IS_STRING:
@@ -199,9 +201,11 @@ void php_var_serialize(pval *buf, pval **struc)
STR_CAT(buf, s, slen);
return;
- case IS_DOUBLE:
- slen = sprintf(s, "d:%g;", (*struc)->value.dval);
- STR_CAT(buf, s, slen);
+ case IS_DOUBLE: {
+ ELS_FETCH();
+ slen = sprintf(s, "d:%.*G;",(int) EG(precision), (*struc)->value.dval);
+ STR_CAT(buf, s, slen);
+ }
return;
case IS_STRING:{