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

Reply via email to