1--TEST-- 2Bug #80602 (Segfault when using DOMChildNode::after()) 3--EXTENSIONS-- 4dom 5--FILE-- 6<?php 7declare(strict_types=1); 8 9$doc = new \DOMDocument(); 10$doc->loadXML('<a>foo<last/></a>'); 11$target = $doc->documentElement->firstChild; 12$target->after($target); 13echo "1 ", $doc->saveXML($doc->documentElement).PHP_EOL; 14 15$doc = new \DOMDocument(); 16$doc->loadXML('<a>foo<last/></a>'); 17$target = $doc->documentElement->lastChild; 18$target->after($target); 19echo "2 ", $doc->saveXML($doc->documentElement).PHP_EOL; 20 21 22$doc = new \DOMDocument(); 23$doc->loadXML('<a>foo<last/></a>'); 24$target = $doc->documentElement->firstChild; 25$target->after($doc->documentElement->lastChild); 26echo "3 ", $doc->saveXML($doc->documentElement).PHP_EOL; 27 28$doc = new \DOMDocument(); 29$doc->loadXML('<a>foo<last/></a>'); 30$target = $doc->documentElement->lastChild; 31$target->after($doc->documentElement->firstChild); 32echo "4 ", $doc->saveXML($doc->documentElement).PHP_EOL; 33 34 35$doc = new \DOMDocument(); 36$doc->loadXML('<a>foo<last/></a>'); 37$target = $doc->documentElement->firstChild; 38$target->after($target, $doc->documentElement->lastChild); 39echo "5 ", $doc->saveXML($doc->documentElement).PHP_EOL; 40 41$doc = new \DOMDocument(); 42$doc->loadXML('<a>foo<last/></a>'); 43$target = $doc->documentElement->firstChild; 44$target->after($doc->documentElement->lastChild, $target); 45echo "6 ", $doc->saveXML($doc->documentElement).PHP_EOL; 46 47 48$doc = new \DOMDocument(); 49$doc->loadXML('<a>foo<last/></a>'); 50$target = $doc->documentElement->lastChild; 51$target->after($target, $doc->documentElement->firstChild); 52echo "7 ", $doc->saveXML($doc->documentElement).PHP_EOL; 53 54$doc = new \DOMDocument(); 55$doc->loadXML('<a>foo<last/></a>'); 56$target = $doc->documentElement->lastChild; 57$target->after($doc->documentElement->firstChild, $target); 58echo "8 ", $doc->saveXML($doc->documentElement).PHP_EOL; 59 60 61$doc = new \DOMDocument(); 62$doc->loadXML('<a>foo<last/></a>'); 63$target = $doc->documentElement->firstChild; 64$target->after('bar','baz'); 65echo "9 ", $doc->saveXML($doc->documentElement).PHP_EOL; 66 67$doc = new \DOMDocument(); 68$doc->loadXML('<a>foo<last/></a>'); 69$target = $doc->documentElement->lastChild; 70$target->after('bar','baz'); 71echo "10 ", $doc->saveXML($doc->documentElement).PHP_EOL; 72 73 74$doc = new \DOMDocument(); 75$doc->loadXML('<a>foo<last/></a>'); 76$target = $doc->documentElement->firstChild; 77$target->after($target, 'bar','baz'); 78echo "11 ", $doc->saveXML($doc->documentElement).PHP_EOL; 79 80$doc = new \DOMDocument(); 81$doc->loadXML('<a>foo<last/></a>'); 82$target = $doc->documentElement->firstChild; 83$target->after('bar', $target, 'baz'); 84echo "12 ", $doc->saveXML($doc->documentElement).PHP_EOL; 85 86$doc = new \DOMDocument(); 87$doc->loadXML('<a>foo<last/></a>'); 88$target = $doc->documentElement->firstChild; 89$target->after('bar', 'baz', $target); 90echo "13 ", $doc->saveXML($doc->documentElement).PHP_EOL; 91 92 93 94$doc = new \DOMDocument(); 95$doc->loadXML('<a>foo<last/></a>'); 96$target = $doc->documentElement->lastChild; 97$target->after($target, 'bar','baz'); 98echo "14 ", $doc->saveXML($doc->documentElement).PHP_EOL; 99 100$doc = new \DOMDocument(); 101$doc->loadXML('<a>foo<last/></a>'); 102$target = $doc->documentElement->lastChild; 103$target->after('bar', $target, 'baz'); 104echo "15 ", $doc->saveXML($doc->documentElement).PHP_EOL; 105 106$doc = new \DOMDocument(); 107$doc->loadXML('<a>foo<last/></a>'); 108$target = $doc->documentElement->lastChild; 109$target->after('bar', 'baz', $target); 110echo "16 ", $doc->saveXML($doc->documentElement).PHP_EOL; 111 112 113 114$doc = new \DOMDocument(); 115$doc->loadXML('<a>foo<last/></a>'); 116$target = $doc->documentElement->firstChild; 117$target->after('bar', $target, $doc->documentElement->lastChild); 118echo "17 ", $doc->saveXML($doc->documentElement).PHP_EOL; 119 120 121$doc = new \DOMDocument(); 122$doc->loadXML('<a>foo<last/></a>'); 123$target = $doc->documentElement->firstChild; 124$target->after($target, 'bar', $doc->documentElement->lastChild); 125echo "18 ", $doc->saveXML($doc->documentElement).PHP_EOL; 126 127 128$doc = new \DOMDocument(); 129$doc->loadXML('<a>foo<last/></a>'); 130$target = $doc->documentElement->firstChild; 131$target->after($target, $doc->documentElement->lastChild, 'bar'); 132echo "19 ", $doc->saveXML($doc->documentElement).PHP_EOL; 133 134 135 136 137$doc = new \DOMDocument(); 138$doc->loadXML('<a>foo<last/></a>'); 139$target = $doc->documentElement->lastChild; 140$target->after('bar', $doc->documentElement->firstChild, $target); 141echo "20 ", $doc->saveXML($doc->documentElement).PHP_EOL; 142 143 144$doc = new \DOMDocument(); 145$doc->loadXML('<a>foo<last/></a>'); 146$target = $doc->documentElement->lastChild; 147$target->after($doc->documentElement->firstChild, 'bar', $target); 148echo "21 ", $doc->saveXML($doc->documentElement).PHP_EOL; 149 150 151$doc = new \DOMDocument(); 152$doc->loadXML('<a>foo<last/></a>'); 153$target = $doc->documentElement->lastChild; 154$target->after($doc->documentElement->firstChild, $target, 'bar'); 155echo "22 ", $doc->saveXML($doc->documentElement).PHP_EOL; 156 157?> 158--EXPECTF-- 1591 <a>foo<last/></a> 1602 <a>foo<last/></a> 1613 <a>foo<last/></a> 1624 <a><last/>foo</a> 1635 <a>foo<last/></a> 1646 <a><last/>foo</a> 1657 <a><last/>foo</a> 1668 <a>foo<last/></a> 1679 <a>foobarbaz<last/></a> 16810 <a>foo<last/>barbaz</a> 16911 <a>foobarbaz<last/></a> 17012 <a>barfoobaz<last/></a> 17113 <a>barbazfoo<last/></a> 17214 <a>foo<last/>barbaz</a> 17315 <a>foobar<last/>baz</a> 17416 <a>foobarbaz<last/></a> 17517 <a>barfoo<last/></a> 17618 <a>foobar<last/></a> 17719 <a>foo<last/>bar</a> 17820 <a>barfoo<last/></a> 17921 <a>foobar<last/></a> 18022 <a>foo<last/>bar</a> 181