mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
parent
7f376183f8
commit
604f18c20d
@ -1761,6 +1761,16 @@ sxe_object_clone(void *object, void **clone_ptr TSRMLS_DC)
|
||||
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);
|
||||
}
|
||||
|
40
ext/simplexml/tests/bug39760.phpt
Normal file
40
ext/simplexml/tests/bug39760.phpt
Normal file
@ -0,0 +1,40 @@
|
||||
--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 = '<?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
|
Loading…
Reference in New Issue
Block a user