From 44955943f9319493b7e744a1ae913977fef80db3 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 28 Jun 2025 10:12:20 +0200 Subject: [PATCH 1/2] ext/intl: Use zval_get_tmp_string where possible (#18966) --- ext/intl/listformatter/listformatter_class.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/intl/listformatter/listformatter_class.c b/ext/intl/listformatter/listformatter_class.c index 1fe8da554a1ca..f1a5039079b8a 100644 --- a/ext/intl/listformatter/listformatter_class.c +++ b/ext/intl/listformatter/listformatter_class.c @@ -135,9 +135,9 @@ PHP_METHOD(IntlListFormatter, format) zval *val; ZEND_HASH_FOREACH_VAL(ht, val) { - zend_string *str_val; + zend_string *str_val, *tmp_str; - str_val = zval_get_string(val); + str_val = zval_get_tmp_string(val, &tmp_str); // Convert PHP string to UTF-16 UChar *ustr = NULL; @@ -145,7 +145,7 @@ PHP_METHOD(IntlListFormatter, format) UErrorCode status = U_ZERO_ERROR; intl_convert_utf8_to_utf16(&ustr, &ustr_len, ZSTR_VAL(str_val), ZSTR_LEN(str_val), &status); - zend_string_release(str_val); + zend_tmp_string_release(tmp_str); if (U_FAILURE(status)) { // We can't use goto cleanup because items and itemLengths are incompletely allocated From 737db4a7dced9a047407b5ab889a86c7528943dd Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Sat, 28 Jun 2025 10:12:43 +0200 Subject: [PATCH 2/2] Use hasThis() where appropriate (#18967) This macro was introduced to solve false compilers warning about the getThis() condition not making sense for the address-taken part of the ternary. --- ext/intl/formatter/formatter_format.c | 2 +- ext/intl/formatter/formatter_parse.c | 2 +- ext/mysqli/mysqli_api.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/intl/formatter/formatter_format.c b/ext/intl/formatter/formatter_format.c index 0323757ed8620..54c5d92fe18a1 100644 --- a/ext/intl/formatter/formatter_format.c +++ b/ext/intl/formatter/formatter_format.c @@ -104,7 +104,7 @@ PHP_FUNCTION( numfmt_format ) INTL_METHOD_CHECK_STATUS( nfo, "Number formatting failed" ); break; case FORMAT_TYPE_CURRENCY: - if (getThis()) { + if (hasThis()) { const char *space; const char *class_name = get_active_class_name(&space); zend_argument_value_error(2, "cannot be NumberFormatter::TYPE_CURRENCY constant, " diff --git a/ext/intl/formatter/formatter_parse.c b/ext/intl/formatter/formatter_parse.c index 9939900650408..ba8307419b4cf 100644 --- a/ext/intl/formatter/formatter_parse.c +++ b/ext/intl/formatter/formatter_parse.c @@ -86,7 +86,7 @@ PHP_FUNCTION( numfmt_parse ) RETVAL_DOUBLE(val_double); break; case FORMAT_TYPE_CURRENCY: - if (getThis()) { + if (hasThis()) { const char *space; const char *class_name = get_active_class_name(&space); zend_argument_value_error(2, "cannot be NumberFormatter::TYPE_CURRENCY constant, " diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 5e2645740b26e..2a20919eee45e 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -327,7 +327,7 @@ PHP_FUNCTION(mysqli_data_seek) MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (mysqli_result_is_unbuffered(result)) { - if (getThis()) { + if (hasThis()) { zend_throw_error(NULL, "mysqli_result::data_seek() cannot be used in MYSQLI_USE_RESULT mode"); } else { zend_throw_error(NULL, "mysqli_data_seek() cannot be used in MYSQLI_USE_RESULT mode"); @@ -855,7 +855,7 @@ PHP_FUNCTION(mysqli_free_result) /* {{{ Get MySQL client info */ PHP_FUNCTION(mysqli_get_client_info) { - if (getThis()) { + if (hasThis()) { if (zend_parse_parameters_none() == FAILURE) { RETURN_THROWS(); }