Commit 26fb2a8a117 for php.net

commit 26fb2a8a117dee1011b7ea075f3fd269871372c8
Merge: c0f01b34607 dd576944029
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Fri Jul 3 13:58:42 2026 -0400

    Merge branch 'PHP-8.4' into PHP-8.5

    * PHP-8.4:
      Fix GH-22570: stack overflow serializing a deeply nested Dom\XMLDocument

diff --cc ext/dom/inner_outer_html_mixin.c
index e337d5fd3b0,e81ca5a7b23..2e080859d69
--- a/ext/dom/inner_outer_html_mixin.c
+++ b/ext/dom/inner_outer_html_mixin.c
@@@ -100,22 -103,14 +100,24 @@@ static zend_string *dom_element_html_fr
  		}
  		if (UNEXPECTED(status < 0)) {
  			smart_str_free_ex(&str, false);
- 			php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true);
+ 			if (!EG(exception)) {
+ 				php_dom_throw_error_with_message(SYNTAX_ERR, "The resulting XML serialization is not well-formed", true);
+ 			}
 -			return FAILURE;
 +			return NULL;
  		}
 -		ZVAL_STR(retval, smart_str_extract(&str));
 +		return smart_str_extract(&str);
  	}
 +}

 +/* https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin */
 +zend_result dom_element_inner_html_read(dom_object *obj, zval *retval)
 +{
 +	DOM_PROP_NODE(xmlNodePtr, node, obj);
 +	zend_string *serialization = dom_element_html_fragment_serialize(obj, node);
 +	if (serialization == NULL) {
 +		return FAILURE;
 +	}
 +	ZVAL_STR(retval, serialization);
  	return SUCCESS;
  }