@@ -909,7 +909,7 @@ static xmlNodePtr _php_dom_insert_fragment(xmlNodePtr nodep, xmlNodePtr prevsib,
909909}
910910/* }}} */
911911
912- static bool dom_node_check_legacy_insertion_validity (xmlNodePtr parentp , xmlNodePtr child , bool stricterror )
912+ static bool dom_node_check_legacy_insertion_validity (xmlNodePtr parentp , xmlNodePtr child , bool stricterror , bool warn_empty_fragment )
913913{
914914 if (dom_node_is_read_only (parentp ) == SUCCESS ||
915915 (child -> parent != NULL && dom_node_is_read_only (child -> parent ) == SUCCESS )) {
@@ -927,7 +927,7 @@ static bool dom_node_check_legacy_insertion_validity(xmlNodePtr parentp, xmlNode
927927 return false;
928928 }
929929
930- if (child -> type == XML_DOCUMENT_FRAG_NODE && child -> children == NULL ) {
930+ if (warn_empty_fragment && child -> type == XML_DOCUMENT_FRAG_NODE && child -> children == NULL ) {
931931 /* TODO Drop Warning? */
932932 php_error_docref (NULL , E_WARNING , "Document Fragment is empty" );
933933 return false;
@@ -969,7 +969,7 @@ PHP_METHOD(DOMNode, insertBefore)
969969
970970 stricterror = dom_get_strict_error (intern -> document );
971971
972- if (!dom_node_check_legacy_insertion_validity (parentp , child , stricterror )) {
972+ if (!dom_node_check_legacy_insertion_validity (parentp , child , stricterror , true )) {
973973 RETURN_FALSE ;
974974 }
975975
@@ -1127,19 +1127,7 @@ PHP_METHOD(DOMNode, replaceChild)
11271127
11281128 stricterror = dom_get_strict_error (intern -> document );
11291129
1130- if (dom_node_is_read_only (nodep ) == SUCCESS ||
1131- (newchild -> parent != NULL && dom_node_is_read_only (newchild -> parent ) == SUCCESS )) {
1132- php_dom_throw_error (NO_MODIFICATION_ALLOWED_ERR , stricterror );
1133- RETURN_FALSE ;
1134- }
1135-
1136- if (newchild -> doc != nodep -> doc && newchild -> doc != NULL ) {
1137- php_dom_throw_error (WRONG_DOCUMENT_ERR , stricterror );
1138- RETURN_FALSE ;
1139- }
1140-
1141- if (dom_hierarchy (nodep , newchild ) == FAILURE ) {
1142- php_dom_throw_error (HIERARCHY_REQUEST_ERR , stricterror );
1130+ if (!dom_node_check_legacy_insertion_validity (nodep , newchild , stricterror , false)) {
11431131 RETURN_FALSE ;
11441132 }
11451133
@@ -1247,7 +1235,7 @@ PHP_METHOD(DOMNode, appendChild)
12471235
12481236 stricterror = dom_get_strict_error (intern -> document );
12491237
1250- if (!dom_node_check_legacy_insertion_validity (nodep , child , stricterror )) {
1238+ if (!dom_node_check_legacy_insertion_validity (nodep , child , stricterror , true )) {
12511239 RETURN_FALSE ;
12521240 }
12531241
0 commit comments