[PHP-CVS] [php-src] master: Zend: remove goto in zend_is_callable_at_frame()
[email protected] (Gina Peter Banyard) Fri, 31 Jul 2026 12:56:48 +0000
| Newsgroups | php.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: Gina Peter Banyard (Girgias)
Date: 2026-07-31T13:56:30+01:00
Commit: https://github.com/php/php-src/commit/af7a6c704a2125ba8fb5b6fb2d9590622074133a
Raw diff: https://github.com/php/php-src/commit/af7a6c704a2125ba8fb5b6fb2d9590622074133a.diff
Zend: remove goto in zend_is_callable_at_frame()
But moving the call into the switch statement rather than trying to understand this code flow.
Changed paths:
M Zend/zend_API.c
Diff:
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 5e5f39213f39..28f24774b71c 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -4186,7 +4186,6 @@ ZEND_API bool zend_is_callable_at_frame(
return 1;
}
-check_func:
ret = zend_is_string_callable(Z_STR_P(callable), frame, fcc, strict_class, error, check_flags & IS_CALLABLE_SUPPRESS_DEPRECATIONS);
if (fcc == &fcc_local) {
zend_release_fcall_info_cache(fcc);
@@ -4238,10 +4237,13 @@ ZEND_API bool zend_is_callable_at_frame(
}
}
- callable = method;
- goto check_func;
+ ret = zend_is_string_callable(Z_STR_P(method), frame, fcc, strict_class, error, check_flags & IS_CALLABLE_SUPPRESS_DEPRECATIONS);
+ if (fcc == &fcc_local) {
+ zend_release_fcall_info_cache(fcc);
+ }
+ return ret;
}
- return 0;
+
case IS_OBJECT:
if (Z_OBJ_HANDLER_P(callable, get_closure) && Z_OBJ_HANDLER_P(callable, get_closure)(Z_OBJ_P(callable), &fcc->calling_scope, &fcc->function_handler, &fcc->object, 1) == SUCCESS) {
fcc->called_scope = fcc->calling_scope;