From 32088b7e308316ad57815eefad0ba0b254401e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 27 Jan 2026 14:00:18 +0100 Subject: [PATCH] zend_enum: Assert that the `case_name` is `IS_STRING` (#21045) Ideally this function would return the `zend_string*` directly to avoid some boilerplate code, but at least by including the assertion the intent is clear. --- Zend/zend_enum.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Zend/zend_enum.h b/Zend/zend_enum.h index d6c82018947..39743c73472 100644 --- a/Zend/zend_enum.h +++ b/Zend/zend_enum.h @@ -50,7 +50,10 @@ ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_clas static zend_always_inline zval *zend_enum_fetch_case_name(zend_object *zobj) { ZEND_ASSERT(zobj->ce->ce_flags & ZEND_ACC_ENUM); - return OBJ_PROP_NUM(zobj, 0); + + zval *name = OBJ_PROP_NUM(zobj, 0); + ZEND_ASSERT(Z_TYPE_P(name) == IS_STRING); + return name; } static zend_always_inline zval *zend_enum_fetch_case_value(zend_object *zobj)