summaryrefslogtreecommitdiff
path: root/Zend/zend_builtin_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r--Zend/zend_builtin_functions.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index f13a2da91d..161bfb2812 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1014,14 +1014,18 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) /*
RETURN_FALSE;
}
- ce = zend_lookup_class_ex(class_name, NULL, 0);
- if (!ce) {
- retval = 0;
+ if (!only_subclass && EXPECTED(zend_string_equals(instance_ce->name, class_name))) {
+ retval = 1;
} else {
- if (only_subclass && instance_ce == ce) {
+ ce = zend_lookup_class_ex(class_name, NULL, 0);
+ if (!ce) {
retval = 0;
- } else {
- retval = instanceof_function(instance_ce, ce);
+ } else {
+ if (only_subclass && instance_ce == ce) {
+ retval = 0;
+ } else {
+ retval = instanceof_function(instance_ce, ce);
+ }
}
}