From 5ebbdecfeaaea1bc78450a2bb6d5ee280bf18dbd Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sun, 26 Aug 2012 13:05:33 +0800 Subject: [PATCH] Fixed bug #62930, and more tests --- ...oreach_list.phpt => foreach_list_001.phpt} | 0 Zend/tests/foreach_list_002.phpt | 26 +++++++++++++++++++ Zend/tests/foreach_list_003.phpt | 13 ++++++++++ Zend/tests/foreach_list_004.phpt | 13 ++++++++++ Zend/zend_compile.c | 5 +++- 5 files changed, 56 insertions(+), 1 deletion(-) rename Zend/tests/{foreach_list.phpt => foreach_list_001.phpt} (100%) create mode 100644 Zend/tests/foreach_list_002.phpt create mode 100644 Zend/tests/foreach_list_003.phpt create mode 100644 Zend/tests/foreach_list_004.phpt diff --git a/Zend/tests/foreach_list.phpt b/Zend/tests/foreach_list_001.phpt similarity index 100% rename from Zend/tests/foreach_list.phpt rename to Zend/tests/foreach_list_001.phpt diff --git a/Zend/tests/foreach_list_002.phpt b/Zend/tests/foreach_list_002.phpt new file mode 100644 index 00000000000..251870ba099 --- /dev/null +++ b/Zend/tests/foreach_list_002.phpt @@ -0,0 +1,26 @@ +--TEST-- +foreach with freak lists +--FILE-- + +--EXPECTF-- +int(1) +int(3) +string(1) "b" + +Notice: Uninitialized string offset: 1 in %sforeach_list_002.php on line %d +string(0) "" + +Notice: Uninitialized string offset: 1 in %sforeach_list_002.php on line %d +string(0) "" diff --git a/Zend/tests/foreach_list_003.phpt b/Zend/tests/foreach_list_003.phpt new file mode 100644 index 00000000000..8674ecd754f --- /dev/null +++ b/Zend/tests/foreach_list_003.phpt @@ -0,0 +1,13 @@ +--TEST-- +foreach with list key +--FILE-- + list(list(), $a)) { +} + +?> +--EXPECTF-- +Fatal error: Cannot use list as key element in %sforeach_list_003.php on line %d diff --git a/Zend/tests/foreach_list_004.phpt b/Zend/tests/foreach_list_004.phpt new file mode 100644 index 00000000000..fd48e8a1f34 --- /dev/null +++ b/Zend/tests/foreach_list_004.phpt @@ -0,0 +1,13 @@ +--TEST-- +foreach with empty list +--FILE-- + list()) { +} + +?> +--EXPECTF-- +Fatal error: Cannot use empty list in %sforeach_list_004.php on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index d8257927fde..704db107cac 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6288,7 +6288,7 @@ void zend_do_foreach_cont(znode *foreach_token, const znode *open_brackets_token zend_error(E_COMPILE_ERROR, "Key element cannot be a reference"); } if (key->EA & ZEND_PARSED_LIST_EXPR) { - zend_error(E_COMPILE_ERROR, "Cannot use list as Key element"); + zend_error(E_COMPILE_ERROR, "Cannot use list as key element"); } } @@ -6326,6 +6326,9 @@ void zend_do_foreach_cont(znode *foreach_token, const znode *open_brackets_token GET_NODE(&value_node, opline->result); if (value->EA & ZEND_PARSED_LIST_EXPR) { + if (!CG(list_llist).head) { + zend_error(E_COMPILE_ERROR, "Cannot use empty list"); + } zend_do_list_end(&dummy, &value_node TSRMLS_CC); zend_do_free(&dummy TSRMLS_CC); } else {