iliaa Mon Jun 11 15:10:12 2007 UTC
Modified files:
/php-src/ext/wddx wddx.c
/php-src/ext/wddx/tests bug41527.phpt bug41283.phpt
Log:
MFB: Fixed bug #41527 (WDDX deserialize numeric string array key).
http://cvs.php.net/viewvc.cgi/php-src/ext/wddx/wddx.c?r1=1.145&r2=1.146&diff_format=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.145 php-src/ext/wddx/wddx.c:1.146
--- php-src/ext/wddx/wddx.c:1.145 Mon May 28 23:00:24 2007
+++ php-src/ext/wddx/wddx.c Mon Jun 11 15:10:12 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.145 2007/05/28 23:00:24 iliaa Exp $ */
+/* $Id: wddx.c,v 1.146 2007/06/11 15:10:12 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -975,25 +975,7 @@
add_property_zval(ent2->data,
ent1->varname, ent1->data);
EG(scope) = old_scope;
} else {
- long l;
- double d;
-
- switch
(is_numeric_string(ent1->varname, strlen(ent1->varname), &l, &d, 0)) {
- case IS_DOUBLE:
- if (d >
INT_MAX) {
- goto
bigint;
- }
- l = (long) d;
- if (l != d) {
- goto
bigint;
- }
- case IS_LONG:
-
zend_hash_index_update(target_hash, l, &ent1->data, sizeof(zval *), NULL);
- break;
- default:
-bigint:
-
zend_hash_update(target_hash,ent1->varname, strlen(ent1->varname)+1,
&ent1->data, sizeof(zval *), NULL);
- }
+
zend_symtable_update(target_hash, ent1->varname, strlen(ent1->varname)+1,
&ent1->data, sizeof(zval *), NULL);
}
efree(ent1->varname);
} else {
http://cvs.php.net/viewvc.cgi/php-src/ext/wddx/tests/bug41527.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/wddx/tests/bug41527.phpt
diff -u /dev/null php-src/ext/wddx/tests/bug41527.phpt:1.2
--- /dev/null Mon Jun 11 15:10:12 2007
+++ php-src/ext/wddx/tests/bug41527.phpt Mon Jun 11 15:10:12 2007
@@ -0,0 +1,22 @@
+--TEST--
+Bug #41527 (WDDX deserialize numeric string array keys)
+--SKIPIF--
+<?php if (!extension_loaded("wddx")) print "skip"; ?>
+--FILE--
+<?php
+$data = array('01' => 'Zero', '+1' => 'Plus sign', ' 1' => 'Space');
+
+var_dump(wddx_deserialize(wddx_serialize_vars('data')));
+?>
+--EXPECT--
+array(1) {
+ ["data"]=>
+ array(3) {
+ ["01"]=>
+ string(4) "Zero"
+ ["+1"]=>
+ string(9) "Plus sign"
+ [" 1"]=>
+ string(5) "Space"
+ }
+}
http://cvs.php.net/viewvc.cgi/php-src/ext/wddx/tests/bug41283.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/wddx/tests/bug41283.phpt
diff -u php-src/ext/wddx/tests/bug41283.phpt:1.2
php-src/ext/wddx/tests/bug41283.phpt:1.3
--- php-src/ext/wddx/tests/bug41283.phpt:1.2 Tue May 29 20:11:23 2007
+++ php-src/ext/wddx/tests/bug41283.phpt Mon Jun 11 15:10:12 2007
@@ -20,7 +20,7 @@
string(5) "One 1"
["1.2"]=>
string(5) "One 2"
- [1]=>
+ ["1.0"]=>
string(5) "Three"
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php