summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Richards <rrichards@php.net>2007-03-18 21:29:20 +0000
committerRob Richards <rrichards@php.net>2007-03-18 21:29:20 +0000
commit339785c43194ccf399b4d83125ccf2d6d3fe4874 (patch)
treeb5f63ccc7e2b98af4d046d23d755e345740be7ad
parentedf3fe4731f8926c2c56b8aea801dfc0b37d6016 (diff)
downloadphp-git-339785c43194ccf399b4d83125ccf2d6d3fe4874.tar.gz
fix bug #40836 (Segfault in ext/dom)
add test
-rw-r--r--ext/dom/node.c2
-rw-r--r--ext/dom/tests/bug40836.phpt29
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>