Commit 3eeca78fcb6 for php.net

commit 3eeca78fcb68e2d982f4611a219d9852374b1b8f
Author: Weilin Du <weilindu@php.net>
Date:   Sun Aug 16 02:27:37 2026 +0800

    Zend: Reuse zend_fetch_function() for dynamic calls

diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 6f3572840d4..14a340ffee3 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -5103,7 +5103,6 @@ static void zend_swap_operands(zend_op *op) /* {{{ */
 static zend_never_inline zend_execute_data *zend_init_dynamic_call_string(zend_string *function, uint32_t num_args) /* {{{ */
 {
 	zend_function *fbc;
-	zval *func;
 	zend_class_entry *called_scope;
 	zend_string *lcname;
 	const char *colon;
@@ -5155,23 +5154,11 @@ static zend_never_inline zend_execute_data *zend_init_dynamic_call_string(zend_s
 			init_func_run_time_cache(&fbc->op_array);
 		}
 	} else {
-		if (ZSTR_VAL(function)[0] == '\\') {
-			lcname = zend_string_alloc(ZSTR_LEN(function) - 1, 0);
-			zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(function) + 1, ZSTR_LEN(function) - 1);
-		} else {
-			lcname = zend_string_tolower(function);
-		}
-		if (UNEXPECTED((func = zend_hash_find(EG(function_table), lcname)) == NULL)) {
+		fbc = zend_fetch_function(function);
+		if (UNEXPECTED(fbc == NULL)) {
 			zend_throw_error(NULL, "Call to undefined function %s()", ZSTR_VAL(function));
-			zend_string_release_ex(lcname, 0);
 			return NULL;
 		}
-		zend_string_release_ex(lcname, 0);
-
-		fbc = Z_FUNC_P(func);
-		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!RUN_TIME_CACHE(&fbc->op_array))) {
-			init_func_run_time_cache(&fbc->op_array);
-		}
 		called_scope = NULL;
 	}