]> granicus.if.org Git - php/commitdiff
Fixed decoding list of arrays (related to bug #39121)
authorDmitry Stogov <dmitry@php.net>
Mon, 23 Oct 2006 06:49:49 +0000 (06:49 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 23 Oct 2006 06:49:49 +0000 (06:49 +0000)
ext/soap/php_encoding.c

index d5c2ee684068ff3076820f028795985da68c1316..84c4aabd39cf9a78afba4ba50ebc70ae3d22868c 100644 (file)
@@ -1346,7 +1346,16 @@ static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_e
 
                                prop = get_zval_property(ret, (char*)trav->name TSRMLS_CC);
                                if (!prop) {
-                                       set_zval_property(ret, (char*)trav->name, tmpVal TSRMLS_CC);
+                                       if (!trav->next || !get_node(trav->next, (char*)trav->name)) {
+                                               set_zval_property(ret, (char*)trav->name, tmpVal TSRMLS_CC);
+                                       } else {
+                                               zval *arr;
+
+                                               MAKE_STD_ZVAL(arr);
+                                               array_init(arr);
+                                               add_next_index_zval(arr, tmpVal);
+                                               set_zval_property(ret, (char*)trav->name, arr TSRMLS_CC);
+                                       }
                                } else {
                                        /* Property already exist - make array */
                                        if (Z_TYPE_P(prop) != IS_ARRAY) {