From: Rob Richards Date: Sun, 18 Mar 2007 21:29:20 +0000 (+0000) Subject: fix bug #40836 (Segfault in ext/dom) X-Git-Tag: RELEASE_1_0_1~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=339785c43194ccf399b4d83125ccf2d6d3fe4874;p=php fix bug #40836 (Segfault in ext/dom) add test --- diff --git a/ext/dom/node.c b/ext/dom/node.c index ae68de924a..0a1ab0a5f2 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