rrichards               Wed May  3 08:43:04 2006 UTC

  Added files:                 (Branch: PHP_5_1)
    /php-src/ext/dom/tests      bug37277.phpt 

  Modified files:              
    /php-src/ext/dom    attr.c element.c php_dom.c 
  Log:
  Fix bug #37277 (cloning Dom Documents or Nodes does not work)
  Proper fix for bug #36859
  add test
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/attr.c?r1=1.18.2.1&r2=1.18.2.2&diff_format=u
Index: php-src/ext/dom/attr.c
diff -u php-src/ext/dom/attr.c:1.18.2.1 php-src/ext/dom/attr.c:1.18.2.2
--- php-src/ext/dom/attr.c:1.18.2.1     Sun Jan  1 12:50:06 2006
+++ php-src/ext/dom/attr.c      Wed May  3 08:43:04 2006
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: attr.c,v 1.18.2.1 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: attr.c,v 1.18.2.2 2006/05/03 08:43:04 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -77,7 +77,7 @@
        }
 
        if (intern != NULL) {
-               oldnode = (xmlNodePtr)intern->ptr;
+               oldnode = dom_object_get_node(intern);
                if (oldnode != NULL) {
                        php_libxml_node_free_resource(oldnode  TSRMLS_CC);
                }
http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/element.c?r1=1.36.2.3&r2=1.36.2.4&diff_format=u
Index: php-src/ext/dom/element.c
diff -u php-src/ext/dom/element.c:1.36.2.3 php-src/ext/dom/element.c:1.36.2.4
--- php-src/ext/dom/element.c:1.36.2.3  Sun Jan  1 12:50:06 2006
+++ php-src/ext/dom/element.c   Wed May  3 08:43:04 2006
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: element.c,v 1.36.2.3 2006/01/01 12:50:06 sniper Exp $ */
+/* $Id: element.c,v 1.36.2.4 2006/05/03 08:43:04 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -128,7 +128,7 @@
 
        intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC);
        if (intern != NULL) {
-               oldnode = (xmlNodePtr)intern->ptr;
+               oldnode = dom_object_get_node(intern);
                if (oldnode != NULL) {
                        php_libxml_node_free_resource(oldnode  TSRMLS_CC);
                }
http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/php_dom.c?r1=1.73.2.11&r2=1.73.2.12&diff_format=u
Index: php-src/ext/dom/php_dom.c
diff -u php-src/ext/dom/php_dom.c:1.73.2.11 php-src/ext/dom/php_dom.c:1.73.2.12
--- php-src/ext/dom/php_dom.c:1.73.2.11 Wed Mar 29 14:28:41 2006
+++ php-src/ext/dom/php_dom.c   Wed May  3 08:43:04 2006
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_dom.c,v 1.73.2.11 2006/03/29 14:28:41 tony2001 Exp $ */
+/* $Id: php_dom.c,v 1.73.2.12 2006/05/03 08:43:04 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -443,7 +443,6 @@
        retval.handle = zend_objects_store_put(new_object, obj->dtor, 
obj->free_storage, obj->clone TSRMLS_CC);
        intern = (dom_object *) new_object;
        intern->handle = retval.handle;
-       intern->ptr = NULL;
        retval.handlers = Z_OBJ_HT_P(zobject);
        
        old_object = (dom_object *) obj->object;

http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/tests/bug37277.phpt?view=markup&rev=1.1
Index: php-src/ext/dom/tests/bug37277.phpt
+++ php-src/ext/dom/tests/bug37277.phpt
--TEST--
Bug # 37277 (cloning Dom Documents or Nodes does not work)
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
$dom1 = new DomDocument('1.0', 'UTF-8');

$xml = '<foo />';
$dom1->loadXml($xml);

$node = clone $dom1->documentElement;

$dom2 = new DomDocument('1.0', 'UTF-8');
$dom2->appendChild($dom2->importNode($node->cloneNode(true), TRUE));

print $dom2->saveXML();


?>
--EXPECT--

<?xml version="1.0" encoding="UTF-8"?>
<foo/>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to