dmitry          Mon Nov  6 16:36:43 2006 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/soap/tests/bugs        bug39121.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/soap   php_packet_soap.c 
  Log:
  Fixed bug #39121 (Incorrect return array handling in non-wsdl soap client)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.332&r2=1.2027.2.547.2.333&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.332 php-src/NEWS:1.2027.2.547.2.333
--- php-src/NEWS:1.2027.2.547.2.332     Sun Nov  5 18:31:41 2006
+++ php-src/NEWS        Mon Nov  6 16:36:42 2006
@@ -27,6 +27,8 @@
   (michal dot taborsky at gmail dot com, Ilia)
 - Fixed bug #39215 (Inappropriate close of stdin/stdout/stderr). (Wez,Ilia)
 - Fixed bug #39151 (Parse error in recursiveiteratoriterator.php). (Marcus)
+- Fixed bug #39121 (Incorrect return array handling in non-wsdl soap client).
+  (Dmitry)
 - Fixed bug #39090 (DirectoryFilterDots doxygen docs and example is wrong).
   (Marcus)
 - Fixed bug #38698 (for some keys cdbmake creates corrupted db and cdb can't 
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_packet_soap.c?r1=1.42.2.1.2.2&r2=1.42.2.1.2.3&diff_format=u
Index: php-src/ext/soap/php_packet_soap.c
diff -u php-src/ext/soap/php_packet_soap.c:1.42.2.1.2.2 
php-src/ext/soap/php_packet_soap.c:1.42.2.1.2.3
--- php-src/ext/soap/php_packet_soap.c:1.42.2.1.2.2     Tue Jul 11 14:24:18 2006
+++ php-src/ext/soap/php_packet_soap.c  Mon Nov  6 16:36:43 2006
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_packet_soap.c,v 1.42.2.1.2.2 2006/07/11 14:24:18 dmitry Exp $ */
+/* $Id: php_packet_soap.c,v 1.42.2.1.2.3 2006/11/06 16:36:43 dmitry Exp $ */
 
 #include "php_soap.h"
 
@@ -350,10 +350,22 @@
                                if (val != NULL) {
                                        if 
(!node_is_equal_ex(val,"result",RPC_SOAP12_NAMESPACE)) {
                                                zval *tmp;
+                                               zval **arr;
 
                                                tmp = master_to_zval(NULL, val);
                                                if (val->name) {
-                                                       
add_assoc_zval(return_value, (char*)val->name, tmp);
+                                                       if 
(zend_hash_find(Z_ARRVAL_P(return_value), (char*)val->name, 
strlen((char*)val->name)+1, (void**)&arr) == SUCCESS) {
+                                                               
add_next_index_zval(*arr, tmp);
+                                                       } else if (val->next && 
get_node(val->next, (char*)val->name)) {
+                                                               zval *arr;
+
+                                                               
MAKE_STD_ZVAL(arr);
+                                                               array_init(arr);
+                                                               
add_next_index_zval(arr, tmp);
+                                                               
add_assoc_zval(return_value, (char*)val->name, arr);
+                                                       } else {
+                                                               
add_assoc_zval(return_value, (char*)val->name, tmp);
+                                                       }
                                                } else {
                                                        
add_next_index_zval(return_value, tmp);
                                                }

http://cvs.php.net/viewvc.cgi/php-src/ext/soap/tests/bugs/bug39121.phpt?view=markup&rev=1.1
Index: php-src/ext/soap/tests/bugs/bug39121.phpt
+++ php-src/ext/soap/tests/bugs/bug39121.phpt

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to