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) {
|
if (known_hash) {
|
||||||
h = ZSTR_H(key);
|
h = ZSTR_H(key);
|
||||||
|
ZEND_ASSERT(h != 0 && "Hash must be known");
|
||||||
} else {
|
} else {
|
||||||
h = zend_string_hash_val(key);
|
h = zend_string_hash_val(key);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5116,18 +5116,15 @@ ZEND_METHOD(ReflectionClass, getTraitAliases)
|
||||||
|
|
||||||
if (!class_name) {
|
if (!class_name) {
|
||||||
uint32_t j = 0;
|
uint32_t j = 0;
|
||||||
zval *zv;
|
|
||||||
zend_class_entry *trait;
|
|
||||||
zend_string *lcname = zend_string_tolower(cur_ref->method_name);
|
zend_string *lcname = zend_string_tolower(cur_ref->method_name);
|
||||||
|
|
||||||
for (j = 0; j < ce->num_traits; j++) {
|
for (j = 0; j < ce->num_traits; j++) {
|
||||||
zv = zend_hash_find_known_hash(CG(class_table), ce->trait_names[j].lc_name);
|
zend_class_entry *trait =
|
||||||
if (zv) {
|
zend_hash_find_ptr(CG(class_table), ce->trait_names[j].lc_name);
|
||||||
trait = Z_CE_P(zv);
|
ZEND_ASSERT(trait && "Trait must exist");
|
||||||
if (zend_hash_exists(&trait->function_table, lcname)) {
|
if (zend_hash_exists(&trait->function_table, lcname)) {
|
||||||
class_name = trait->name;
|
class_name = trait->name;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
zend_string_release_ex(lcname, 0);
|
zend_string_release_ex(lcname, 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue