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