rrichards               Sun Mar 18 21:31:05 2007 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/dom/tests      bug40836.phpt 

  Modified files:              
    /php-src/ext/dom    node.c 
  Log:
  MFH: fix bug #40836 (Segfault in ext/dom)
  add test
  
http://cvs.php.net/viewvc.cgi/php-src/ext/dom/node.c?r1=1.37.2.3.2.6&r2=1.37.2.3.2.7&diff_format=u
Index: php-src/ext/dom/node.c
diff -u php-src/ext/dom/node.c:1.37.2.3.2.6 php-src/ext/dom/node.c:1.37.2.3.2.7
--- php-src/ext/dom/node.c:1.37.2.3.2.6 Mon Jan  1 09:36:00 2007
+++ php-src/ext/dom/node.c      Sun Mar 18 21:31:04 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: node.c,v 1.37.2.3.2.6 2007/01/01 09:36:00 sebastian Exp $ */
+/* $Id: node.c,v 1.37.2.3.2.7 2007/03/18 21:31:04 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1012,7 +1012,7 @@
                        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) {

http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/bug40836.phpt?view=markup&rev=1.1
Index: php-src/ext/dom/tests/bug40836.phpt
+++ php-src/ext/dom/tests/bug40836.phpt
--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>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to