diff --git a/Zend/tests/gh12366.inc b/Zend/tests/gh12366.inc new file mode 100644 index 0000000000000..c0f64e14ba7b5 --- /dev/null +++ b/Zend/tests/gh12366.inc @@ -0,0 +1,7 @@ + +--EXPECT-- +enum(Level::Debug) diff --git a/Zend/zend_enum.c b/Zend/zend_enum.c index 25261cf53f880..f807c8196548e 100644 --- a/Zend/zend_enum.c +++ b/Zend/zend_enum.c @@ -229,6 +229,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce) ZSTR_VAL(name)); goto failure; } + Z_TRY_ADDREF_P(case_name); zend_hash_index_add_new(backed_enum_table, long_key, case_name); } else { ZEND_ASSERT(ce->enum_backing_type == IS_STRING); @@ -241,6 +242,7 @@ zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce) ZSTR_VAL(name)); goto failure; } + Z_TRY_ADDREF_P(case_name); zend_hash_add_new(backed_enum_table, string_key, case_name); } } ZEND_HASH_FOREACH_END();