From: Dmitry Stogov Date: Thu, 18 Feb 2021 14:18:57 +0000 (+0300) Subject: Properly relove self::CONSTANT at compile time X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9619562dbcb5954e343d61243e1b7a7d80443447;p=php Properly relove self::CONSTANT at compile time --- diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 07c4e87621..df88d34a6f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -10073,7 +10073,19 @@ void zend_eval_const_expr(zend_ast **ast_ptr) /* {{{ */ return; } - resolved_name = zend_resolve_class_name_ast(class_ast); + switch (zend_get_class_fetch_type(zend_ast_get_str(class_ast))) { + case ZEND_FETCH_CLASS_SELF: + if (!zend_is_scope_known()) { + return; + } + resolved_name = zend_string_copy(CG(active_class_entry)->name); + break; + case ZEND_FETCH_CLASS_DEFAULT: + resolved_name = zend_resolve_class_name_ast(class_ast); + break; + default: + return; + } if (!zend_try_ct_eval_class_const(&result, resolved_name, zend_ast_get_str(name_ast))) { zend_string_release_ex(resolved_name, 0);