Dmitry,
This is not a critical fix, please revert it and hold off until 5.2.0
release before applying it to the 5.2 branch.
Thanks
On 23-Oct-06, at 2:46 AM, Dmitry Stogov wrote:
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
<[EMAIL PROTECTED]> |
+---------------------------------------------------------------------
-+
*/
-/* $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;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Ilia Alshanetsky
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php