--- /dev/null
+--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"
+ }
+}
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 {