Commit 469b7b96e85 for php.net
commit 469b7b96e854ac51a0d04da9a99bf4e5e79af9f7
Merge: fa0e11f185f d8e741838a5
Author: Weilin Du <weilindu@php.net>
Date: Tue Jun 16 21:21:50 2026 +0800
Merge branch 'PHP-8.4' into PHP-8.5
diff --cc NEWS
index bd575259600,05bdd1b35ff..9159e3ecfdb
--- a/NEWS
+++ b/NEWS
@@@ -22,13 -24,28 +22,16 @@@ PH
- GD:
. Fixed bug GH-22121 (Double free in gdImageSetStyle() after
overflow-triggered early return). (iliaal)
- . Fixed bug GH-19666 (imageconvolution() unexpected nan filter value).
- (David Carlier)
- . Fixed bug GH-19739 (imageellipse/imagefilledellipse overflow).
- (David Carlier)
- . Fixed bug GH-19730 (imageaffine overflow).
- (David Carlier)
- Intl:
- . Fix incorrect argument positions for uninitialized calendar arguments in
- IntlCalendar::equals(), ::before(), ::after(), and ::isEquivalentTo(), and
- for invalid start/end arguments in transliterator_transliterate().
++ . Fix incorrect argument positions for invalid start/end arguments in
++ transliterator_transliterate().
+ (Weilin Du)
. Fixed IntlTimeZone::getDisplayName() to synchronize object error state
for invalid display types. (Weilin Du)
- . Fixed Spoofchecker restriction-level APIs to only be exposed with ICU 53
- and later. (Graham Campbell)
-
-- mysqli:
- . Fix stmt->query leak in mysqli_execute_query() validation errors.
- (David Carlier)
- Opcache:
+ . Fixed bug GH-22265 (Another tailcall vm_interrupt bug). (Levi Morrison)
. Fixed bug GH-20469 (Unsafe inheritance cache replay with reentrant
autoloading). (Levi Morrison)
diff --cc ext/intl/tests/transliterator_transliterate_error.phpt
index e11de9333d4,aefdd72b400..61190abc6d3
--- a/ext/intl/tests/transliterator_transliterate_error.phpt
+++ b/ext/intl/tests/transliterator_transliterate_error.phpt
@@@ -7,29 -5,54 +7,54 @@@ intl.use_exceptions=tru
--FILE--
<?php
-ini_set("intl.error_level", E_WARNING);
-
$tr = Transliterator::create("latin");
- try {
- var_dump(transliterator_transliterate($tr, "str", 7));
- } catch (Throwable $e) {
- echo $e::class, ': ', $e->getMessage(), PHP_EOL;
-function dump_value_error(callable $callback): void {
++function dump_throwable(callable $callback): void {
+ try {
+ $callback();
- } catch (ValueError $exception) {
- echo $exception->getMessage() . "\n";
++ } catch (Throwable $e) {
++ echo $e::class, ': ', $e->getMessage(), PHP_EOL;
+ }
}
- try {
+ //Arguments
-var_dump(transliterator_transliterate($tr,"str",7));
++dump_throwable(function() use ($tr) {
++ var_dump(transliterator_transliterate($tr, "str", 7));
++});
+
-dump_value_error(function() use ($tr) {
- transliterator_transliterate($tr,"str",7,6);
++dump_throwable(function() use ($tr) {
+ transliterator_transliterate($tr, "str", 7, 6);
- } catch (Throwable $e) {
- echo $e::class, ': ', $e->getMessage(), PHP_EOL;
- }
+ });
+
-dump_value_error(function() use ($tr) {
- transliterator_transliterate($tr,"str", 0, -2);
++dump_throwable(function() use ($tr) {
++ transliterator_transliterate($tr, "str", 0, -2);
+ });
+
-dump_value_error(function() use ($tr) {
- transliterator_transliterate($tr,"str", -1);
++dump_throwable(function() use ($tr) {
++ transliterator_transliterate($tr, "str", -1);
+ });
+
-dump_value_error(function() {
- transliterator_transliterate("latin","str", -1);
++dump_throwable(function() {
++ transliterator_transliterate("latin", "str", -1);
+ });
+
-dump_value_error(function() use ($tr) {
++dump_throwable(function() use ($tr) {
+ $tr->transliterate("str", 7, 6);
+ });
//bad UTF-8
-transliterator_transliterate($tr, "\x80\x03");
+try {
+ transliterator_transliterate($tr, "\x80\x03");
+} catch (Throwable $e) {
+ echo $e::class, ': ', $e->getMessage(), PHP_EOL;
+}
-echo "Done.\n";
?>
---EXPECTF--
-Warning: transliterator_transliterate(): transliterator_transliterate: Neither "start" nor the "end" arguments can exceed the number of UTF-16 code units (in this case, 3) in %s on line %d
-bool(false)
-transliterator_transliterate(): Argument #3 ($start) must be less than or equal to argument #4 ($end)
-transliterator_transliterate(): Argument #4 ($end) must be greater than or equal to -1
-transliterator_transliterate(): Argument #3 ($start) must be greater than or equal to 0
-transliterator_transliterate(): Argument #3 ($start) must be greater than or equal to 0
-Transliterator::transliterate(): Argument #2 ($start) must be less than or equal to argument #3 ($end)
-
-Warning: transliterator_transliterate(): String conversion of string to UTF-16 failed in %s on line %d
-Done.
+--EXPECT--
+IntlException: transliterator_transliterate(): Neither "start" nor the "end" arguments can exceed the number of UTF-16 code units (in this case, 3)
- ValueError: transliterator_transliterate(): Argument #2 ($string) must be less than or equal to argument #3 ($end)
++ValueError: transliterator_transliterate(): Argument #3 ($start) must be less than or equal to argument #4 ($end)
++ValueError: transliterator_transliterate(): Argument #4 ($end) must be greater than or equal to -1
++ValueError: transliterator_transliterate(): Argument #3 ($start) must be greater than or equal to 0
++ValueError: transliterator_transliterate(): Argument #3 ($start) must be greater than or equal to 0
++ValueError: Transliterator::transliterate(): Argument #2 ($start) must be less than or equal to argument #3 ($end)
+IntlException: transliterator_transliterate(): String conversion of string to UTF-16 failed