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