1
0
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:
Xinchen Hui
2016-06-17 09:34:15 -07:00
parent 08f0345d0a
commit fcd8a5ca65
3 changed files with 20 additions and 5 deletions

3
NEWS
View File

@@ -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
View 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

View File

@@ -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);