zend_enum.c: make a bunch of pointers const (#15932)

* zend_enum.c: make a bunch of pointers `const`

* interface_gets_implemented needs non-constant

* zend_enum.h: update zend_verify_enum() signature
This commit is contained in:
DanielEScherzer 2024-09-17 03:57:01 -07:00 committed by GitHub
parent a3583d7eef
commit 21196ca9f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 10 deletions

View file

@ -57,9 +57,9 @@ zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case
return zobj; return zobj;
} }
static void zend_verify_enum_properties(zend_class_entry *ce) static void zend_verify_enum_properties(const zend_class_entry *ce)
{ {
zend_property_info *property_info; const zend_property_info *property_info;
ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property_info) { ZEND_HASH_MAP_FOREACH_PTR(&ce->properties_info, property_info) {
if (zend_string_equals(property_info->name, ZSTR_KNOWN(ZEND_STR_NAME))) { if (zend_string_equals(property_info->name, ZSTR_KNOWN(ZEND_STR_NAME))) {
@ -77,7 +77,7 @@ static void zend_verify_enum_properties(zend_class_entry *ce)
} ZEND_HASH_FOREACH_END(); } ZEND_HASH_FOREACH_END();
} }
static void zend_verify_enum_magic_methods(zend_class_entry *ce) static void zend_verify_enum_magic_methods(const zend_class_entry *ce)
{ {
// Only __get, __call and __invoke are allowed // Only __get, __call and __invoke are allowed
@ -109,7 +109,7 @@ static void zend_verify_enum_magic_methods(zend_class_entry *ce)
} }
} }
static void zend_verify_enum_interfaces(zend_class_entry *ce) static void zend_verify_enum_interfaces(const zend_class_entry *ce)
{ {
if (zend_class_implements_interface(ce, zend_ce_serializable)) { if (zend_class_implements_interface(ce, zend_ce_serializable)) {
zend_error_noreturn(E_COMPILE_ERROR, zend_error_noreturn(E_COMPILE_ERROR,
@ -117,7 +117,7 @@ static void zend_verify_enum_interfaces(zend_class_entry *ce)
} }
} }
void zend_verify_enum(zend_class_entry *ce) void zend_verify_enum(const zend_class_entry *ce)
{ {
zend_verify_enum_properties(ce); zend_verify_enum_properties(ce);
zend_verify_enum_magic_methods(ce); zend_verify_enum_magic_methods(ce);
@ -205,7 +205,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce)
zend_hash_init(backed_enum_table, 0, NULL, ZVAL_PTR_DTOR, 0); zend_hash_init(backed_enum_table, 0, NULL, ZVAL_PTR_DTOR, 0);
zend_class_set_backed_enum_table(ce, backed_enum_table); zend_class_set_backed_enum_table(ce, backed_enum_table);
zend_string *enum_class_name = ce->name; const zend_string *enum_class_name = ce->name;
zend_string *name; zend_string *name;
zval *val; zval *val;
@ -228,7 +228,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce)
if (ce->enum_backing_type == IS_LONG) { if (ce->enum_backing_type == IS_LONG) {
zend_long long_key = Z_LVAL_P(case_value); zend_long long_key = Z_LVAL_P(case_value);
zval *existing_case_name = zend_hash_index_find(backed_enum_table, long_key); const zval *existing_case_name = zend_hash_index_find(backed_enum_table, long_key);
if (existing_case_name) { if (existing_case_name) {
zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s", zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s",
ZSTR_VAL(enum_class_name), ZSTR_VAL(enum_class_name),
@ -241,7 +241,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce)
} else { } else {
ZEND_ASSERT(ce->enum_backing_type == IS_STRING); ZEND_ASSERT(ce->enum_backing_type == IS_STRING);
zend_string *string_key = Z_STR_P(case_value); zend_string *string_key = Z_STR_P(case_value);
zval *existing_case_name = zend_hash_find(backed_enum_table, string_key); const zval *existing_case_name = zend_hash_find(backed_enum_table, string_key);
if (existing_case_name != NULL) { if (existing_case_name != NULL) {
zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s", zend_throw_error(NULL, "Duplicate value in enum %s for cases %s and %s",
ZSTR_VAL(enum_class_name), ZSTR_VAL(enum_class_name),
@ -294,7 +294,7 @@ ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_clas
} }
} }
HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce); const HashTable *backed_enum_table = CE_BACKED_ENUM_TABLE(ce);
if (!backed_enum_table) { if (!backed_enum_table) {
goto not_found; goto not_found;
} }

View file

@ -34,7 +34,7 @@ void zend_register_enum_ce(void);
void zend_enum_add_interfaces(zend_class_entry *ce); void zend_enum_add_interfaces(zend_class_entry *ce);
zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce); zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce);
zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case_name, zval *backing_value_zv); zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case_name, zval *backing_value_zv);
void zend_verify_enum(zend_class_entry *ce); void zend_verify_enum(const zend_class_entry *ce);
void zend_enum_register_funcs(zend_class_entry *ce); void zend_enum_register_funcs(zend_class_entry *ce);
void zend_enum_register_props(zend_class_entry *ce); void zend_enum_register_props(zend_class_entry *ce);