mirror of
https://github.com/php/php-src.git
synced 2026-03-29 11:42:17 +02:00
Fixed bug #72441 (Segmentation fault: RFC list_keys)
This commit is contained in:
3
NEWS
3
NEWS
@@ -3,9 +3,10 @@ PHP NEWS
|
||||
?? ??? 2016, PHP 7.1.0alpha2
|
||||
|
||||
- Core:
|
||||
. Implemented RFC: Replace "Missing argument" warning with "Too few
|
||||
. Implemented RFC: R/eplace "Missing argument" warning with "Too few
|
||||
arguments" exception. (Dmitry)
|
||||
. Implemented RFC: Fix inconsistent behavior of $this variable. (Dmitry)
|
||||
. Fixed bug #72441 (Segmentation fault: RFC list_keys). (Laruence)
|
||||
. Fixed bug #72395 (list() regression). (Laruence)
|
||||
. Fixed bug #72373 (TypeError after Generator function w/declared return type
|
||||
finishes). (Nikita)
|
||||
|
||||
14
Zend/tests/bug72441.phpt
Normal file
14
Zend/tests/bug72441.phpt
Normal file
@@ -0,0 +1,14 @@
|
||||
--TEST--
|
||||
Bug #72441 (Segmentation fault: RFC list_keys)
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$array = [];
|
||||
|
||||
list(
|
||||
'' => $foo,
|
||||
$bar
|
||||
) = $array;
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: Cannot mix keyed and unkeyed array entries in assignments in %sbug72441.php on line %d
|
||||
@@ -2819,6 +2819,10 @@ static void zend_compile_keyed_list_assign(zend_ast_list *list, znode *expr_node
|
||||
zend_error(E_COMPILE_ERROR, "[] and list() assignments cannot be by reference");
|
||||
}
|
||||
|
||||
if (key_ast == NULL) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot mix keyed and unkeyed array entries in assignments");
|
||||
}
|
||||
|
||||
zend_compile_expr(&dim_node, key_ast);
|
||||
|
||||
if (expr_node->op_type == IS_CONST) {
|
||||
@@ -2829,10 +2833,6 @@ static void zend_compile_keyed_list_assign(zend_ast_list *list, znode *expr_node
|
||||
zend_error(E_COMPILE_ERROR, "Cannot use empty array entries in keyed array");
|
||||
}
|
||||
|
||||
if (key_ast == NULL) {
|
||||
zend_error(E_COMPILE_ERROR, "Cannot mix keyed and unkeyed array entries in assignments");
|
||||
}
|
||||
|
||||
zend_verify_list_assign_target(var_ast, old_style);
|
||||
|
||||
zend_emit_op(&fetch_result, ZEND_FETCH_LIST, expr_node, &dim_node);
|
||||
|
||||
Reference in New Issue
Block a user