mirror of
https://github.com/php/php-src.git
synced 2026-03-26 17:22:15 +01:00
@@ -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) {
|
||||
|
||||
29
ext/dom/tests/bug40836.phpt
Normal file
29
ext/dom/tests/bug40836.phpt
Normal file
@@ -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>
|
||||
Reference in New Issue
Block a user