Commit afd04afe0fc for php.net
commit afd04afe0fcc2ccf85e1c7ca9b6c82939b038772
Author: Gina Peter Banyard <girgias@php.net>
Date: Fri Nov 7 02:16:04 2025 +0000
zend_builtin_functions.c: refactor is_a_impl() to use early returns
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 91a552372c3..8487b803230 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -691,7 +691,6 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, bool only_subclass) /* {{{ *
zend_string *class_name;
const zend_class_entry *instance_ce;
bool allow_string = only_subclass;
- bool retval;
ZEND_PARSE_PARAMETERS_START(2, 3)
Z_PARAM_ZVAL(obj)
@@ -718,21 +717,19 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, bool only_subclass) /* {{{ *
}
if (!only_subclass && EXPECTED(zend_string_equals(instance_ce->name, class_name))) {
- retval = 1;
- } else {
- const zend_class_entry *ce = zend_lookup_class_ex(class_name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
- if (!ce) {
- retval = 0;
- } else {
- if (only_subclass && instance_ce == ce) {
- retval = 0;
- } else {
- retval = instanceof_function(instance_ce, ce);
- }
- }
+ RETURN_TRUE;
+ }
+
+ const zend_class_entry *ce = zend_lookup_class_ex(class_name, NULL, ZEND_FETCH_CLASS_NO_AUTOLOAD);
+ if (!ce) {
+ RETURN_FALSE;
+ }
+
+ if (only_subclass && instance_ce == ce) {
+ RETURN_FALSE;
}
- RETURN_BOOL(retval);
+ RETURN_BOOL(instanceof_function(instance_ce, ce));
}
/* }}} */