diff --git a/NEWS b/NEWS index 9ae9edf6b98..1f9c48d28b6 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,8 @@ PHP NEWS . Fixed language scanner generation build. (Daniel Black) . Fixed zend_update_static_property() calling zend_update_static_property_ex() misleadingly with the wrong return type. (nielsdos) + . Fixed unknown string hash on property fetch with integer constant name. + (nielsdos) - Curl: . Fixed deprecation warning at compile time. (Max Kellermann) diff --git a/Zend/tests/gh10570.phpt b/Zend/tests/gh10570.phpt new file mode 100644 index 00000000000..edd35c1ca30 --- /dev/null +++ b/Zend/tests/gh10570.phpt @@ -0,0 +1,14 @@ +--TEST-- +GH-10570 (Assertion `(key)->h != 0 && "Hash must be known"' failed.): constant variation +--FILE-- +{90}; + $a->{0} = 0; +} +?> +--EXPECTF-- +Warning: Undefined property: stdClass::$90 in %s on line %d + +Warning: Undefined property: stdClass::$90 in %s on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index f169efcffe4..816f13d148a 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2931,6 +2931,7 @@ static zend_op *zend_delayed_compile_prop(znode *result, zend_ast *ast, uint32_t opline = zend_delayed_emit_op(result, ZEND_FETCH_OBJ_R, &obj_node, &prop_node); if (opline->op2_type == IS_CONST) { convert_to_string(CT_CONSTANT(opline->op2)); + zend_string_hash_val(Z_STR_P(CT_CONSTANT(opline->op2))); opline->extended_value = zend_alloc_cache_slots(3); }