iliaa Wed Jul 23 12:44:27 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/domxml php_domxml.c Log: MFH: Fixed #24609 (segfault when using replace node across different docs) Patch by: Rob Richards # This patch somehow did not make it into 4.3.X, so on Rob's request in am # MFHing it in. Index: php-src/ext/domxml/php_domxml.c diff -u php-src/ext/domxml/php_domxml.c:1.218.2.25 php-src/ext/domxml/php_domxml.c:1.218.2.26 --- php-src/ext/domxml/php_domxml.c:1.218.2.25 Wed Jun 18 13:43:34 2003 +++ php-src/ext/domxml/php_domxml.c Wed Jul 23 12:44:27 2003 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.c,v 1.218.2.25 2003/06/18 17:43:34 rrichards Exp $ */ +/* $Id: php_domxml.c,v 1.218.2.26 2003/07/23 16:44:27 iliaa Exp $ */ /* TODO * - Support Notation Nodes @@ -2384,6 +2384,7 @@ { zval *id, *rv = NULL, *node; xmlNodePtr repnode, nodep, old_repnode; + xmlDocPtr tmpdoc; int ret; DOMXML_GET_THIS_OBJ(nodep, id, le_domxmlnodep); @@ -2394,7 +2395,17 @@ DOMXML_GET_OBJ(repnode, node, le_domxmlnodep); + tmpdoc = repnode->doc; + old_repnode = xmlReplaceNode(nodep, repnode); + + /* ReplaceNode will change the doc for only the first node + so check if doc was changed */ + if (tmpdoc != repnode->doc) { + /* Set doc back to old doc otherwise libxml wont change all sub nodes */ + repnode->doc = tmpdoc; + xmlSetTreeDoc(repnode, old_repnode->doc); + } DOMXML_RET_OBJ(rv, old_repnode, &ret); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php