diff options
author | Rob Richards <rrichards@php.net> | 2007-03-18 21:29:20 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2007-03-18 21:29:20 +0000 |
commit | 339785c43194ccf399b4d83125ccf2d6d3fe4874 (patch) | |
tree | b5f63ccc7e2b98af4d046d23d755e345740be7ad | |
parent | edf3fe4731f8926c2c56b8aea801dfc0b37d6016 (diff) | |
download | php-git-339785c43194ccf399b4d83125ccf2d6d3fe4874.tar.gz |
fix bug #40836 (Segfault in ext/dom)
add test
-rw-r--r-- | ext/dom/node.c | 2 | ||||
-rw-r--r-- | ext/dom/tests/bug40836.phpt | 29 |
2 files changed, 30 insertions, 1 deletions
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-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +$dom = new DOMDocument("1.0", "UTF-8"); +$dom->preserveWhiteSpace = false; +$xml = (binary)'<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom"> + <entry xmlns="http://www.w3.org/2005/Atom"> + <updated>2007-02-14T00:00:00+01:00</updated> + <content> + <div xmlns="http://www.w3.org/1999/xhtml"> + <p>paragraph</p> + </div> + </content> + </entry> +</feed>'; +$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-- +<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom"><entry xmlns="http://www.w3.org/2005/Atom"><updated/><content><div xmlns="http://www.w3.org/1999/xhtml"><p>paragraph2007-02-14T00:00:00+01:00</p></div></content></entry></feed> |