Commit f0db414abc6 for php.net

commit f0db414abc645302c731c26848266ba940d5fcf8
Merge: 5bf50210a6c 1adadf07e52
Author: Ilia Alshanetsky <ilia@ilia.ws>
Date:   Tue Sep 1 08:17:38 2026 -0400

    Merge branch 'PHP-8.4' into PHP-8.5

    * PHP-8.4:
      [intl] Fix empty-needle grapheme_strpos offsets
      Fix GH-23444: ODBC_ATTR_ASSUME_UTF8 corrupts Unicode data outside Windows (#23445)

diff --cc ext/intl/tests/grapheme_empty_offset_multibyte.phpt
index 00000000000,caa545c882c..1e2d736da58
mode 000000,100644..100644
--- a/ext/intl/tests/grapheme_empty_offset_multibyte.phpt
+++ b/ext/intl/tests/grapheme_empty_offset_multibyte.phpt
@@@ -1,0 -1,36 +1,34 @@@
+ --TEST--
+ grapheme_strpos() family with empty needle and offset on multi-code-unit graphemes
+ --EXTENSIONS--
+ intl
+ --FILE--
+ <?php
+
 -ini_set("intl.error_level", E_WARNING);
 -
+ var_dump(grapheme_strpos("😀x", ""));
+ var_dump(grapheme_strpos("😀x", "", 0));
+ var_dump(grapheme_strpos("😀x", "", 1));
+ var_dump(grapheme_stripos("😀x", "", 1));
+ var_dump(grapheme_strpos("😀x", "", -1));
+ var_dump(grapheme_strrpos("😀x", ""));
+ var_dump(grapheme_strrpos("😀x", "", 1));
+ var_dump(grapheme_strripos("😀x", "", 1));
+ var_dump(grapheme_strrpos("😀x", "", -1));
+ try {
+     var_dump(grapheme_strpos("😀x", "", 5));
+ } catch (Throwable $e) {
+     echo $e::class, ': ', $e->getMessage(), "\n";
+ }
+
+ ?>
+ --EXPECT--
+ int(0)
+ int(0)
+ int(1)
+ int(1)
+ int(1)
+ int(2)
+ int(2)
+ int(2)
+ int(1)
+ ValueError: grapheme_strpos(): Argument #3 ($offset) must be contained in argument #1 ($haystack)