cvs: php-src(PHP_5_2) /ext/soap php_encoding.c
| From: | Dmitry Stogov | Date: | Mon, 23 Oct 2006 06:46:38 +0000 |
| Subject: | cvs: php-src(PHP_5_2) /ext/soap php_encoding.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-41191@lists.php.net to get a copy of this message | ||
dmitry Mon Oct 23 06:46:38 2006 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/soap php_encoding.c
Log:
Fixed decoding of list of arrays in non-WSDL mode. (releated to bug #39121)
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.103.2.21.2.11&r2=1.103.2.21.2.12&diff_format=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.103.2.21.2.11
php-src/ext/soap/php_encoding.c:1.103.2.21.2.12
--- php-src/ext/soap/php_encoding.c:1.103.2.21.2.11 Tue Oct 3 07:00:35 2006
+++ php-src/ext/soap/php_encoding.c Mon Oct 23 06:46:38 2006
@@ -17,7 +17,7 @@
| Dmitry Stogov <dmitry@zend.com> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c,v 1.103.2.21.2.11 2006/10/03 07:00:35 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.21.2.12 2006/10/23 06:46:38 dmitry Exp $ */
#include <time.h>
@@ -1102,23 +1102,23 @@
}
add_string_to_string(val, val, val2);
zval_ptr_dtor(&val2);
- node = node->next;
+ node = node->next;
}
}
if (any == NULL) {
any = val;
} else {
if (Z_TYPE_P(any) != IS_ARRAY) {
- /* Convert into array */
- zval *arr;
+ /* Convert into array */
+ zval *arr;
- MAKE_STD_ZVAL(arr);
- array_init(arr);
- add_next_index_zval(arr, any);
- any = arr;
- }
- /* Add array element */
- add_next_index_zval(any, val);
+ MAKE_STD_ZVAL(arr);
+ array_init(arr);
+ add_next_index_zval(arr, any);
+ any = arr;
+ }
+ /* Add array element */
+ add_next_index_zval(any, val);
}
}
node = node->next;
@@ -1378,22 +1378,31 @@
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) {
- /* Convert into array */
- zval *arr;
-
- MAKE_STD_ZVAL(arr);
- array_init(arr);
- prop->refcount++;
- add_next_index_zval(arr, prop);
- set_zval_property(ret, (char*)trav->name, arr TSRMLS_CC);
- prop = arr;
- }
- /* Add array element */
- add_next_index_zval(prop, tmpVal);
+ /* Property already exist - make array */
+ if (Z_TYPE_P(prop) != IS_ARRAY) {
+ /* Convert into array */
+ zval *arr;
+
+ MAKE_STD_ZVAL(arr);
+ array_init(arr);
+ prop->refcount++;
+ add_next_index_zval(arr, prop);
+ set_zval_property(ret, (char*)trav->name, arr TSRMLS_CC);
+ prop = arr;
+ }
+ /* Add array element */
+ add_next_index_zval(prop, tmpVal);
}
}
trav = trav->next;