dmitry Fri Feb 4 10:42:47 2005 EDT
Modified files:
/php-src/ext/soap soap.c
Log:
Fixed bug #31832 (SOAP encoding problem with complex types in WSDL mode with
multiple parts)
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.136&r2=1.137&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.136 php-src/ext/soap/soap.c:1.137
--- php-src/ext/soap/soap.c:1.136 Wed Feb 2 05:34:39 2005
+++ php-src/ext/soap/soap.c Fri Feb 4 10:42:46 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: soap.c,v 1.136 2005/02/02 10:34:39 dmitry Exp $ */
+/* $Id: soap.c,v 1.137 2005/02/04 15:42:46 dmitry Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -3161,13 +3161,12 @@
zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(ret), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(ret), (void
**)&data, &pos) != FAILURE) {
- char *param_name;
+ char *param_name = NULL;
int param_name_len;
- long param_index;
+ long param_index = i;
zend_hash_get_current_key_ex(Z_ARRVAL_P(ret),
¶m_name, ¶m_name_len, ¶m_index, 0, &pos);
parameter = get_param(function, param_name,
param_index, TRUE);
-
if (style == SOAP_RPC) {
param = serialize_parameter(parameter, *data,
i, param_name, use, method TSRMLS_CC);
} else {
@@ -3788,6 +3787,16 @@
if (param_name != NULL) {
if (zend_hash_find(ht, param_name, strlen(param_name), (void
**)&tmp) != FAILURE) {
return *tmp;
+ } else {
+ HashPosition pos;
+
+ zend_hash_internal_pointer_reset_ex(ht, &pos);
+ while (zend_hash_get_current_data_ex(ht, (void **)&tmp,
&pos) != FAILURE) {
+ if ((*tmp)->paramName && strcmp(param_name,
(*tmp)->paramName) == 0) {
+ return *tmp;
+ }
+ zend_hash_move_forward_ex(ht, &pos);
+ }
}
} else {
if (zend_hash_index_find(ht, index, (void **)&tmp) != FAILURE) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php