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--
+
+