rrichards Sat Dec 30 15:42:24 2006 UTC Modified files: /php-src/ext/simplexml simplexml.c /php-src/ext/simplexml/tests bug39760.phpt Log: MFB: fix bug #39760 (cloning fails on nested SimpleXML-Object) add test http://cvs.php.net/viewvc.cgi/php-src/ext/simplexml/simplexml.c?r1=1.224&r2=1.225&diff_format=u Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.224 php-src/ext/simplexml/simplexml.c:1.225 --- php-src/ext/simplexml/simplexml.c:1.224 Wed Nov 29 22:53:21 2006 +++ php-src/ext/simplexml/simplexml.c Sat Dec 30 15:42:24 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.224 2006/11/29 22:53:21 tony2001 Exp $ */ +/* $Id: simplexml.c,v 1.225 2006/12/30 15:42:24 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1783,6 +1783,16 @@ clone->document->refcount++; docp = clone->document->ptr; } + + clone->iter.isprefix = sxe->iter.isprefix; + if (sxe->iter.name != NULL) { + clone->iter.name = xmlStrdup((xmlChar *)sxe->iter.name); + } + if (sxe->iter.nsprefix != NULL) { + clone->iter.nsprefix = xmlStrdup((xmlChar *)sxe->iter.nsprefix); + } + clone->iter.type = sxe->iter.type; + if (sxe->node) { nodep = xmlDocCopyNode(sxe->node->node, docp, 1); } @@ -2362,7 +2372,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.224 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.225 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled"); http://cvs.php.net/viewvc.cgi/php-src/ext/simplexml/tests/bug39760.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/simplexml/tests/bug39760.phpt diff -u /dev/null php-src/ext/simplexml/tests/bug39760.phpt:1.2 --- /dev/null Sat Dec 30 15:42:24 2006 +++ php-src/ext/simplexml/tests/bug39760.phpt Sat Dec 30 15:42:24 2006 @@ -0,0 +1,55 @@ +--TEST-- +Bug #39760 (cloning fails on nested SimpleXML-Object) +--SKIPIF-- +<?php if (!extension_loaded("simplexml")) print "skip simplexml extension is not loaded"; ?> +--FILE-- +<?php + +$xml = b'<?xml version="1.0" ?> +<test> + <level1> + <level2a>text1</level2a> + <level2b>text2</level2b> + </level1> +</test>'; +$test = simplexml_load_string($xml); + +var_dump($test->level1->level2a); + +$test2 = clone $test; +var_dump($test2->level1->level2a); + +$test3 = clone $test->level1->level2a; +var_dump($test3); + +echo "Done\n"; +?> +--EXPECTF-- +object(SimpleXMLElement)#%d (1) { + [0]=> + string(5) "text1" +} +object(SimpleXMLElement)#%d (1) { + [0]=> + string(5) "text1" +} +object(SimpleXMLElement)#%d (1) { + [0]=> + string(5) "text1" +} +Done + +--UEXPECTF-- +object(SimpleXMLElement)#%d (1) { + [0]=> + unicode(5) "text1" +} +object(SimpleXMLElement)#%d (1) { + [0]=> + unicode(5) "text1" +} +object(SimpleXMLElement)#%d (1) { + [0]=> + unicode(5) "text1" +} +Done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php