dmitry          Thu Nov 27 14:49:46 2008 UTC

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

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/soap   php_encoding.c 
  Log:
  Fixed bug #44882 (SOAP extension object decoding bug)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1333&r2=1.2027.2.547.2.1334&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.1333 php-src/NEWS:1.2027.2.547.2.1334
--- php-src/NEWS:1.2027.2.547.2.1333    Thu Nov 27 11:25:22 2008
+++ php-src/NEWS        Thu Nov 27 14:49:45 2008
@@ -11,6 +11,7 @@
   (Ilia)
 - Fixed bug #46427 (SoapClient() stumbles over its "stream_context" parameter).
   (Dmitry, Herman Radtke)
+- Fixed bug #44882 (SOAP extension object decoding bug). (Dmitry)
 - Fixed bug #44182 (extract($a, EXTR_REFS) can fail to split copy-on-write
   references). (robin_fernandes at uk dot ibm dot com)
 - Fixed bug #44181 (extract($a, EXTR_OVERWRITE|EXTR_REFS) can fail to create 
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.103.2.21.2.43&r2=1.103.2.21.2.44&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.43 
php-src/ext/soap/php_encoding.c:1.103.2.21.2.44
--- php-src/ext/soap/php_encoding.c:1.103.2.21.2.43     Sun Oct 26 02:02:05 2008
+++ php-src/ext/soap/php_encoding.c     Thu Nov 27 14:49:46 2008
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_encoding.c,v 1.103.2.21.2.43 2008/10/26 02:02:05 felipe Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.21.2.44 2008/11/27 14:49:46 dmitry Exp $ */
 
 #include <time.h>
 
@@ -1419,7 +1419,7 @@
        sdlPtr sdl;
        sdlTypePtr sdlType = type->sdl_type;
        zend_class_entry *ce = ZEND_STANDARD_CLASS_DEF_PTR;
-       zend_bool redo_any = 0;
+       zval *redo_any = NULL;
        TSRMLS_FETCH();
 
        if (pce) {
@@ -1491,10 +1491,7 @@
                                if (soap_check_xml_ref(&ret, data TSRMLS_CC)) {
                                        return ret;
                                }
-                               if (get_zval_property(ret, "any" TSRMLS_CC) != 
NULL) {
-                                       unset_zval_property(ret, "any" 
TSRMLS_CC);
-                                       redo_any = 1;
-                               }
+                               redo_any = get_zval_property(ret, "any" 
TSRMLS_CC);
                                if (Z_TYPE_P(ret) == IS_OBJECT && ce != 
ZEND_STANDARD_CLASS_DEF_PTR) {
                                        zend_object *zobj = 
zend_objects_get_address(ret TSRMLS_CC);
                                        zobj->ce = ce;
@@ -1520,10 +1517,17 @@
                        object_init_ex(ret, ce);
                }
                if (sdlType->model) {
+                       if (redo_any) {
+                               redo_any->refcount++;
+                               unset_zval_property(ret, "any" TSRMLS_CC);
+                       }
                        model_to_zval_object(ret, sdlType->model, data, sdl 
TSRMLS_CC);
-                       if (redo_any && get_zval_property(ret, "any" TSRMLS_CC) 
== NULL) {
-                               model_to_zval_any(ret, data->children 
TSRMLS_CC);
-                 }
+                       if (redo_any) {
+                               if (get_zval_property(ret, "any" TSRMLS_CC) == 
NULL) {
+                                       model_to_zval_any(ret, data->children 
TSRMLS_CC);
+                               }
+                               zval_ptr_dtor(&redo_any);
+                       }
                }
                if (sdlType->attributes) {
                        sdlAttributePtr *attr;

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

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



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

Reply via email to