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