diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c index 85660a7b3549f..3876cf0409856 100644 --- a/ext/dom/characterdata.c +++ b/ext/dom/characterdata.c @@ -410,8 +410,7 @@ PHP_METHOD(DOMCharacterData, replaceWith) id = ZEND_THIS; DOM_GET_OBJ(context, id, xmlNodePtr, intern); - dom_parent_node_after(intern, args, argc); - dom_child_node_remove(intern); + dom_child_replace_with(intern, args, argc); } #endif diff --git a/ext/dom/tests/DOMCharacterData_replaceWith_self.phpt b/ext/dom/tests/DOMCharacterData_replaceWith_self.phpt new file mode 100644 index 0000000000000..dfeedd7942663 --- /dev/null +++ b/ext/dom/tests/DOMCharacterData_replaceWith_self.phpt @@ -0,0 +1,15 @@ +--TEST-- +DOMCharacterData::replaceWith() with itself +--EXTENSIONS-- +dom +--FILE-- +loadXML(''); +$cdata = $dom->documentElement->firstChild; +$cdata->replaceWith($cdata); +echo $dom->saveXML(); +?> +--EXPECT-- + +