Commit b621f80dce5 for php.net

commit b621f80dce5c63e9e0ff5dfbf5d3da927e77871a
Author: Gina Peter Banyard <girgias@php.net>
Date:   Fri Apr 3 18:59:49 2026 +0100

    ext/mbstring: use new INI API and remove unnecessary casts (#21393)

diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 95b624ef1d2..c5987f3c9e7 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1216,17 +1216,17 @@ PHP_FUNCTION(mb_language)
 	ZEND_PARSE_PARAMETERS_END();

 	if (name == NULL) {
-		RETVAL_STRING((char *)mbfl_no_language2name(MBSTRG(language)));
+		RETVAL_STRING(mbfl_no_language2name(MBSTRG(language)));
 	} else {
-		zend_string *ini_name = ZSTR_INIT_LITERAL("mbstring.language", 0);
+		zend_string *ini_name = ZSTR_INIT_LITERAL("mbstring.language", false);
 		if (FAILURE == zend_alter_ini_entry(ini_name, name, PHP_INI_USER, PHP_INI_STAGE_RUNTIME)) {
 			zend_argument_value_error(1, "must be a valid language, \"%s\" given", ZSTR_VAL(name));
-			zend_string_release_ex(ini_name, 0);
+			zend_string_release_ex(ini_name, false);
 			RETURN_THROWS();
 		}
 		// TODO Make return void
 		RETVAL_TRUE;
-		zend_string_release_ex(ini_name, 0);
+		zend_string_release_ex(ini_name, false);
 	}
 }
 /* }}} */
@@ -1509,7 +1509,7 @@ PHP_FUNCTION(mb_preferred_mime_name)
 		php_error_docref(NULL, E_WARNING, "No MIME preferred name corresponding to \"%s\"", name);
 		RETVAL_FALSE;
 	} else {
-		RETVAL_STRING((char *)preferred_name);
+		RETVAL_STRING(preferred_name);
 	}
 }
 /* }}} */
@@ -3517,7 +3517,7 @@ PHP_FUNCTION(mb_detect_encoding)
 		RETURN_FALSE;
 	}

-	RETVAL_STRING((char *)ret->name);
+	RETVAL_STRING(ret->name);
 }
 /* }}} */

@@ -3563,7 +3563,7 @@ PHP_FUNCTION(mb_encoding_aliases)
 	array_init(return_value);
 	if (encoding->aliases != NULL) {
 		for (const char **alias = encoding->aliases; *alias; ++alias) {
-			add_next_index_string(return_value, (char *)*alias);
+			add_next_index_string(return_value, *alias);
 		}
 	}
 }
@@ -4768,7 +4768,7 @@ PHP_FUNCTION(mb_send_mail)

 	str_headers = smart_str_extract(&str);

-	zend_string *force_extra_parameters = zend_ini_str_ex("mail.force_extra_parameters", strlen("mail.force_extra_parameters"), false, NULL);
+	zend_string *force_extra_parameters = zend_ini_str_literal("mail.force_extra_parameters");
 	if (force_extra_parameters) {
 		extra_cmd = php_escape_shell_cmd(force_extra_parameters);
 	} else if (extra_cmd) {
@@ -4804,7 +4804,7 @@ PHP_FUNCTION(mb_get_info)
 {
 	zend_string *type = NULL;
 	size_t n;
-	char *name;
+	const char *name;
 	zval row;
 	const mbfl_encoding **entry;
 	const mbfl_language *lang = mbfl_no2language(MBSTRG(language));
@@ -4819,26 +4819,26 @@ PHP_FUNCTION(mb_get_info)
 	if (!type || zend_string_equals_literal_ci(type, "all")) {
 		array_init(return_value);
 		if (MBSTRG(current_internal_encoding)) {
-			add_assoc_string(return_value, "internal_encoding", (char *)MBSTRG(current_internal_encoding)->name);
+			add_assoc_string(return_value, "internal_encoding", MBSTRG(current_internal_encoding)->name);
 		}
 		if (MBSTRG(http_input_identify)) {
-			add_assoc_string(return_value, "http_input", (char *)MBSTRG(http_input_identify)->name);
+			add_assoc_string(return_value, "http_input", MBSTRG(http_input_identify)->name);
 		}
 		if (MBSTRG(current_http_output_encoding)) {
-			add_assoc_string(return_value, "http_output", (char *)MBSTRG(current_http_output_encoding)->name);
+			add_assoc_string(return_value, "http_output", MBSTRG(current_http_output_encoding)->name);
 		}

 		add_assoc_str(return_value, "http_output_conv_mimetypes",
-			zend_ini_str("mbstring.http_output_conv_mimetypes", sizeof("mbstring.http_output_conv_mimetypes") - 1, 0)
+			zend_string_copy(zend_ini_str_literal("mbstring.http_output_conv_mimetypes"))
 		);

-		name = (char *)mbfl_no_encoding2name(lang->mail_charset);
+		name = mbfl_no_encoding2name(lang->mail_charset);
 		add_assoc_string(return_value, "mail_charset", name);

-		name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding);
+		name = mbfl_no_encoding2name(lang->mail_header_encoding);
 		add_assoc_string(return_value, "mail_header_encoding", name);

-		name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding);
+		name = mbfl_no_encoding2name(lang->mail_body_encoding);
 		add_assoc_string(return_value, "mail_body_encoding", name);

 		add_assoc_long(return_value, "illegal_chars", MBSTRG(illegalchars));
@@ -4849,7 +4849,7 @@ PHP_FUNCTION(mb_get_info)
 			add_assoc_string(return_value, "encoding_translation", "Off");
 		}

-		name = (char *)mbfl_no_language2name(MBSTRG(language));
+		name = mbfl_no_language2name(MBSTRG(language));
 		add_assoc_string(return_value, "language", name);

 		// TODO Seems to always have one entry at least?
@@ -4880,31 +4880,25 @@ PHP_FUNCTION(mb_get_info)
 		}
 	} else if (zend_string_equals_literal_ci(type, "internal_encoding")) {
 		ZEND_ASSERT(MBSTRG(current_internal_encoding));
-		RETURN_STRING((char *)MBSTRG(current_internal_encoding)->name);
+		RETURN_STRING(MBSTRG(current_internal_encoding)->name);
 	} else if (zend_string_equals_literal_ci(type, "http_input")) {
 		if (MBSTRG(http_input_identify)) {
-			RETURN_STRING((char *)MBSTRG(http_input_identify)->name);
+			RETURN_STRING(MBSTRG(http_input_identify)->name);
 		}
 		RETURN_NULL();
 	} else if (zend_string_equals_literal_ci(type, "http_output")) {
 		ZEND_ASSERT(MBSTRG(current_http_output_encoding));
-		RETURN_STRING((char *)MBSTRG(current_http_output_encoding)->name);
+		RETURN_STRING(MBSTRG(current_http_output_encoding)->name);
 	} else if (zend_string_equals_literal_ci(type, "http_output_conv_mimetypes")) {
-		RETURN_STR(
-			zend_ini_str(
-				"mbstring.http_output_conv_mimetypes",
-				sizeof("mbstring.http_output_conv_mimetypes") - 1,
-				false
-			)
-		);
+		RETURN_STR_COPY(zend_ini_str_literal("mbstring.http_output_conv_mimetypes"));
 	} else if (zend_string_equals_literal_ci(type, "mail_charset")) {
-		name = (char *)mbfl_no_encoding2name(lang->mail_charset);
+		name = mbfl_no_encoding2name(lang->mail_charset);
 		RETURN_STRING(name);
 	} else if (zend_string_equals_literal_ci(type, "mail_header_encoding")) {
-		name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding);
+		name = mbfl_no_encoding2name(lang->mail_header_encoding);
 		RETURN_STRING(name);
 	} else if (zend_string_equals_literal_ci(type, "mail_body_encoding")) {
-		name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding);
+		name = mbfl_no_encoding2name(lang->mail_body_encoding);
 		RETURN_STRING(name);
 	} else if (zend_string_equals_literal_ci(type, "illegal_chars")) {
 		RETURN_LONG(MBSTRG(illegalchars));
@@ -4915,7 +4909,7 @@ PHP_FUNCTION(mb_get_info)
 			RETURN_STRING("Off");
 		}
 	} else if (zend_string_equals_literal_ci(type, "language")) {
-		name = (char *)mbfl_no_language2name(MBSTRG(language));
+		name = mbfl_no_language2name(MBSTRG(language));
 		RETURN_STRING(name);
 	} else if (zend_string_equals_literal_ci(type, "detect_order")) {
 		// TODO Seems to always have one entry at least?