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

Reply via email to