mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
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
This commit is contained in:
commit
aaba0000d3
2 changed files with 7 additions and 9 deletions
|
@ -664,6 +664,7 @@ static zend_always_inline Bucket *zend_hash_find_bucket(const HashTable *ht, zen
|
|||
|
||||
if (known_hash) {
|
||||
h = ZSTR_H(key);
|
||||
ZEND_ASSERT(h != 0 && "Hash must be known");
|
||||
} else {
|
||||
h = zend_string_hash_val(key);
|
||||
}
|
||||
|
|
|
@ -5116,20 +5116,17 @@ ZEND_METHOD(ReflectionClass, getTraitAliases)
|
|||
|
||||
if (!class_name) {
|
||||
uint32_t j = 0;
|
||||
zval *zv;
|
||||
zend_class_entry *trait;
|
||||
zend_string *lcname = zend_string_tolower(cur_ref->method_name);
|
||||
|
||||
for (j = 0; j < ce->num_traits; j++) {
|
||||
zv = zend_hash_find_known_hash(CG(class_table), ce->trait_names[j].lc_name);
|
||||
if (zv) {
|
||||
trait = Z_CE_P(zv);
|
||||
zend_class_entry *trait =
|
||||
zend_hash_find_ptr(CG(class_table), ce->trait_names[j].lc_name);
|
||||
ZEND_ASSERT(trait && "Trait must exist");
|
||||
if (zend_hash_exists(&trait->function_table, lcname)) {
|
||||
class_name = trait->name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
zend_string_release_ex(lcname, 0);
|
||||
ZEND_ASSERT(class_name != NULL);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue