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