Commit 5dfd11b1b0d for php

commit 5dfd11b1b0de6d066868ea6384d42d1aacc3b93d
Author: Weilin Du <weilindu@php.net>
Date:   Fri Sep 25 00:23:44 2026 +0800

    ext/intl: Stop enumCharNames() when the callback throws (#23866)

diff --git a/ext/intl/uchar/tests/enumCharNames_callback_exception.phpt b/ext/intl/uchar/tests/enumCharNames_callback_exception.phpt
new file mode 100644
index 00000000000..2ebac7aac92
--- /dev/null
+++ b/ext/intl/uchar/tests/enumCharNames_callback_exception.phpt
@@ -0,0 +1,20 @@
+--TEST--
+IntlChar::enumCharNames() propagates callback exceptions and remains usable
+--EXTENSIONS--
+intl
+--FILE--
+<?php
+try {
+    IntlChar::enumCharNames(65, 68, static function ($codepoint) {
+        echo $codepoint, "\n";
+        throw new Exception('Stop enumeration');
+    });
+} catch (Exception $e) {
+    echo $e->getMessage(), "\n";
+}
+var_dump(IntlChar::enumCharNames(65, 68, static fn() => false));
+?>
+--EXPECT--
+65
+Stop enumeration
+bool(true)
diff --git a/ext/intl/uchar/uchar.cpp b/ext/intl/uchar/uchar.cpp
index 1319ec67908..b2df5b9a05a 100644
--- a/ext/intl/uchar/uchar.cpp
+++ b/ext/intl/uchar/uchar.cpp
@@ -312,7 +312,7 @@ static UBool enumCharNames_callback(enumCharNames_data *context,
 	}
 	zval_ptr_dtor(&retval);
 	zval_ptr_dtor_str(&args[2]);
-	return 1;
+	return !EG(exception);
 }
 IC_METHOD(enumCharNames) {
 	UChar32 start, limit;