dmitry Thu Nov 27 14:49:56 2008 UTC
Added files: (Branch: PHP_5_3)
/php-src/ext/soap/tests/bugs bug44882.phpt bug44882.wsdl
Modified files:
/php-src/ext/soap php_encoding.c
Log:
Fixed bug #44882 (SOAP extension object decoding bug)
http://cvs.php.net/viewvc.cgi/php-src/ext/soap/php_encoding.c?r1=1.103.2.21.2.37.2.10&r2=1.103.2.21.2.37.2.11&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.37.2.10
php-src/ext/soap/php_encoding.c:1.103.2.21.2.37.2.11
--- php-src/ext/soap/php_encoding.c:1.103.2.21.2.37.2.10 Sun Oct 26
02:00:44 2008
+++ php-src/ext/soap/php_encoding.c Thu Nov 27 14:49:55 2008
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c,v 1.103.2.21.2.37.2.10 2008/10/26 02:00:44 felipe Exp $
*/
+/* $Id: php_encoding.c,v 1.103.2.21.2.37.2.11 2008/11/27 14:49:55 dmitry Exp $
*/
#include <time.h>
@@ -1458,7 +1458,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) {
@@ -1530,10 +1530,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;
@@ -1559,10 +1556,17 @@
object_init_ex(ret, ce);
}
if (sdlType->model) {
+ if (redo_any) {
+ Z_ADDREF_P(redo_any);
+ 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