Merge branch 'PHP-8.1'

This commit is contained in:
Ilija Tovilo 2021-12-05 18:33:10 +01:00
commit 66af53cab8
No known key found for this signature in database
GPG Key ID: A4F5D403F118200A
2 changed files with 14 additions and 1 deletions

11
Zend/tests/bug81684.phpt Normal file
View File

@ -0,0 +1,11 @@
--TEST--
Bug #81684: ??= on $GLOBALS produces an invalid opcode
--FILE--
<?php
$GLOBALS['x'] ??= 'x'; // Fatal error: Invalid opcode 23/1/0
var_dump($GLOBALS['x']);
echo "Done.\n";
?>
--EXPECT--
string(1) "x"
Done.

View File

@ -8925,7 +8925,9 @@ static void zend_compile_assign_coalesce(znode *result, zend_ast *ast) /* {{{ */
/* Reproduce some of the zend_compile_assign() opcode fixup logic here. */
opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1];
switch (var_ast->kind) {
/* Treat $GLOBALS['x'] assignment like assignment to variable. */
zend_ast_kind kind = is_global_var_fetch(var_ast) ? ZEND_AST_VAR : var_ast->kind;
switch (kind) {
case ZEND_AST_VAR:
zend_emit_op_tmp(&assign_node, ZEND_ASSIGN, &var_node_w, &default_node);
break;