diff options
| author | Sander Roobol <sander@php.net> | 2002-08-19 19:45:46 +0000 |
|---|---|---|
| committer | Sander Roobol <sander@php.net> | 2002-08-19 19:45:46 +0000 |
| commit | 47ae4068bb604220feb12bfee3afa35ce18d2d33 (patch) | |
| tree | 6ea49140a2177b47a840f2ba4851c52f53f3699b | |
| parent | ef9014d95debaad7ab444407aa92b12005934723 (diff) | |
| download | php-git-47ae4068bb604220feb12bfee3afa35ce18d2d33.tar.gz | |
Made unserialize handle floats with an E notation - bug #18654
Patch by Christophe Sollet <csollet@coleebris.com>.
(I'll commit a new var_unserializer.c in a second)
| -rw-r--r-- | ext/standard/tests/serialize/003.phpt | 24 | ||||
| -rw-r--r-- | ext/standard/var_unserializer.re | 2 |
2 files changed, 25 insertions, 1 deletions
diff --git a/ext/standard/tests/serialize/003.phpt b/ext/standard/tests/serialize/003.phpt new file mode 100644 index 0000000000..43e9077382 --- /dev/null +++ b/ext/standard/tests/serialize/003.phpt @@ -0,0 +1,24 @@ +--TEST-- +unserialize() floats with E notation (#18654) +--POST-- +--GET-- +--FILE-- +<?php +foreach(array(1e2, 5.2e25, 85.29e-23, 9e-9) AS $value) { + echo ($ser = serialize($value))."\n"; + var_dump(unserialize($ser)); + echo "\n"; +} +?> +--EXPECT-- +d:100; +float(100) + +d:5.2E+25; +float(5.2E+25) + +d:8.529E-22; +float(8.529E-22) + +d:9E-09; +float(9.E-9) diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 185909492b..1e6dcd078c 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -92,7 +92,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) /*!re2c iv = [+-]? [0-9]+; nv = [+-]? ([0-9]* "." [0-9]+|[0-9]+ "." [0-9]+); -nvexp = nv [eE] [+-]? iv; +nvexp = (iv | nv) [eE] [+-]? iv; any = [\000-\277]; */ |
