tony2001 Sun Mar 5 15:58:09 2006 UTC Modified files: /php-src/ext/simplexml simplexml.c Log: MF51: fix #36611 (assignment to SimpleXML object attribute changes argument type to string) http://cvs.php.net/viewcvs.cgi/php-src/ext/simplexml/simplexml.c?r1=1.198&r2=1.199&diff_format=u Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.198 php-src/ext/simplexml/simplexml.c:1.199 --- php-src/ext/simplexml/simplexml.c:1.198 Sun Mar 5 14:01:13 2006 +++ php-src/ext/simplexml/simplexml.c Sun Mar 5 15:58:09 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.198 2006/03/05 14:01:13 rrichards Exp $ */ +/* $Id: simplexml.c,v 1.199 2006/03/05 15:58:09 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -409,7 +409,7 @@ int nodendx = 0; int test = 0; long cnt; - zval tmp_zv, trim_zv; + zval tmp_zv, trim_zv, value_copy; if (!member) { /* This happens when the user did: $sxe[] = $value @@ -477,6 +477,11 @@ case IS_DOUBLE: case IS_NULL: case IS_UNICODE: + if (value->refcount > 1) { + value_copy = *value; + zval_copy_ctor(&value_copy); + value = &value_copy; + } convert_to_string(value); break; case IS_STRING: @@ -568,6 +573,9 @@ if (pnewnode) { *pnewnode = newnode; } + if (value && value == &value_copy) { + zval_dtor(value); + } } /* }}} */ @@ -2170,7 +2178,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.198 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.199 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled");
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php