summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_builtin_functions.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index dca0890b14..582296a8df 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1381,11 +1381,10 @@ ZEND_FUNCTION(class_exists)
ce = zend_hash_find_ptr(EG(class_table), lc_name);
zend_string_release(lc_name);
- RETURN_BOOL(ce && !((ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT)) > ZEND_ACC_EXPLICIT_ABSTRACT_CLASS));
+ } else {
+ ce = zend_lookup_class(class_name);
}
- ce = zend_lookup_class(class_name);
-
if (ce) {
RETURN_BOOL((ce->ce_flags & (ZEND_ACC_INTERFACE | ZEND_ACC_TRAIT)) == 0);
} else {
@@ -1467,12 +1466,12 @@ ZEND_FUNCTION(trait_exists)
ce = zend_hash_find_ptr(EG(class_table), lc_name);
zend_string_release(lc_name);
- RETURN_BOOL(ce && ((ce->ce_flags & ZEND_ACC_TRAIT) > ZEND_ACC_EXPLICIT_ABSTRACT_CLASS));
+ } else {
+ ce = zend_lookup_class(trait_name);
}
- ce = zend_lookup_class(trait_name);
if (ce) {
- RETURN_BOOL((ce->ce_flags & ZEND_ACC_TRAIT) > ZEND_ACC_EXPLICIT_ABSTRACT_CLASS);
+ RETURN_BOOL((ce->ce_flags & ZEND_ACC_TRAIT) != 0);
} else {
RETURN_FALSE;
}