From b172d3f8cd9710ded61cfe9e13187db43bcdde65 Mon Sep 17 00:00:00 2001 From: Rob Richards Date: Sun, 18 Mar 2007 21:31:05 +0000 Subject: MFH: fix bug #40836 (Segfault in ext/dom) add test --- ext/dom/node.c | 2 +- ext/dom/tests/bug40836.phpt | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 ext/dom/tests/bug40836.phpt diff --git a/ext/dom/node.c b/ext/dom/node.c index f9c359ba8d..d5cb048537 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -1012,7 +1012,7 @@ PHP_FUNCTION(dom_node_insert_before) new_child = xmlAddPrevSibling(refp, child); } } else { - if (child->parent == parentp){ + if (child->parent != NULL){ xmlUnlinkNode(child); } if (child->type == XML_TEXT_NODE && parentp->last != NULL && parentp->last->type == XML_TEXT_NODE) { diff --git a/ext/dom/tests/bug40836.phpt b/ext/dom/tests/bug40836.phpt new file mode 100644 index 0000000000..5f454c85e0 --- /dev/null +++ b/ext/dom/tests/bug40836.phpt @@ -0,0 +1,29 @@ +--TEST-- +Bug # 40836 (Segfault in insertBefore) +--SKIPIF-- + +--FILE-- +preserveWhiteSpace = false; +$xml = (binary)' + + + 2007-02-14T00:00:00+01:00 + +
+

paragraph

+
+
+
+
'; +$dom->loadXML($xml); +$entry = $dom->getElementsByTagNameNS("http://www.w3.org/2005/Atom", "entry")->item(0); +$contentNode = $entry->getElementsByTagName("content")->item(0)->firstChild; +$dateNode = $entry->getElementsByTagName("updated")->item(0)->firstChild; +$contentNode->firstChild->insertBefore($dateNode); +echo $dom->saveXML(); +?> +--EXPECT-- + +

paragraph2007-02-14T00:00:00+01:00

-- cgit v1.2.1