summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2003-05-04 18:41:02 +0000
committerIlia Alshanetsky <iliaa@php.net>2003-05-04 18:41:02 +0000
commit75c01dd66bc7d9572cfb5e98674b82f4e2297ade (patch)
treec15568a7c4aa8f67d4a1ed20dff9065ba9514350
parente6d0c8c237d27507f26e9982df57cd66c37ec096 (diff)
downloadphp-git-75c01dd66bc7d9572cfb5e98674b82f4e2297ade.tar.gz
Fixed bug #23298 (serialize cuts off floats & doubles)
-rw-r--r--ext/standard/tests/serialize/bug23298.phpt11
-rw-r--r--ext/standard/var.c2
2 files changed, 12 insertions, 1 deletions
diff --git a/ext/standard/tests/serialize/bug23298.phpt b/ext/standard/tests/serialize/bug23298.phpt
new file mode 100644
index 0000000000..5d1931bd74
--- /dev/null
+++ b/ext/standard/tests/serialize/bug23298.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #23298 (serialize() and floats/doubles)
+--FILE--
+<?php
+ ini_set('precision', 12);
+ $foo = 1.428571428571428647642857142;
+ $bar = unserialize(serialize($foo));
+ var_dump(($foo === $bar));
+?>
+--EXPECT--
+bool(true)
diff --git a/ext/standard/var.c b/ext/standard/var.c
index 9dbc15241d..89db9e7c0f 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -535,7 +535,7 @@ static void php_var_serialize_intern(smart_str *buf, zval **struc, HashTable *va
char s[256];
ulong slen;
- slen = sprintf(s, "d:%.*G;", (int) EG(precision), Z_DVAL_PP(struc));
+ slen = sprintf(s, "d:%.252g;", Z_DVAL_PP(struc));
smart_str_appendl(buf, s, slen);
return;
}