diff --git a/Zend/tests/gh12366.inc b/Zend/tests/gh12366.inc new file mode 100644 index 00000000000..c0f64e14ba7 --- /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 2e85bb08a72..58862c1564d 100644 --- a/Zend/zend_enum.c +++ b/Zend/zend_enum.c @@ -236,6 +236,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); @@ -248,6 +249,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();