Skip to content

Commit aaba000

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: Fix bug #81630: Don't claim known hash in getTraitAliases() Assert hash is known when we claim it is
2 parents 24485aa + 6641e3b commit aaba000

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

Zend/zend_hash.c

+1
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ static zend_always_inline Bucket *zend_hash_find_bucket(const HashTable *ht, zen
664664

665665
if (known_hash) {
666666
h = ZSTR_H(key);
667+
ZEND_ASSERT(h != 0 && "Hash must be known");
667668
} else {
668669
h = zend_string_hash_val(key);
669670
}

ext/reflection/php_reflection.c

+6-9
Original file line numberDiff line numberDiff line change
@@ -5116,18 +5116,15 @@ ZEND_METHOD(ReflectionClass, getTraitAliases)
51165116

51175117
if (!class_name) {
51185118
uint32_t j = 0;
5119-
zval *zv;
5120-
zend_class_entry *trait;
51215119
zend_string *lcname = zend_string_tolower(cur_ref->method_name);
51225120

51235121
for (j = 0; j < ce->num_traits; j++) {
5124-
zv = zend_hash_find_known_hash(CG(class_table), ce->trait_names[j].lc_name);
5125-
if (zv) {
5126-
trait = Z_CE_P(zv);
5127-
if (zend_hash_exists(&trait->function_table, lcname)) {
5128-
class_name = trait->name;
5129-
break;
5130-
}
5122+
zend_class_entry *trait =
5123+
zend_hash_find_ptr(CG(class_table), ce->trait_names[j].lc_name);
5124+
ZEND_ASSERT(trait && "Trait must exist");
5125+
if (zend_hash_exists(&trait->function_table, lcname)) {
5126+
class_name = trait->name;
5127+
break;
51315128
}
51325129
}
51335130
zend_string_release_ex(lcname, 0);

0 commit comments

Comments
 (0)