summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-07-09 23:20:50 +0300
committerDmitry Stogov <dmitry@zend.com>2015-07-09 23:20:50 +0300
commit8c3f701eebfa92d761bb368cfa8c2d1ccf821b9d (patch)
tree27b4b3a7e25b4f8785ff5205ea7c3c91ebe16330 /Zend/zend_compile.c
parent788c4c852d0b0523eb918039e4ac3247f5c8a6d0 (diff)
downloadphp-git-8c3f701eebfa92d761bb368cfa8c2d1ccf821b9d.tar.gz
Fixed exception catching on break/continue
Fixed "finaly" handling on exception in "return" statement
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 4f21769e12..4ae27e5a3f 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3482,7 +3482,7 @@ void zend_compile_return(zend_ast *ast) /* {{{ */
zend_emit_return_type_check(expr_ast ? &expr_node : NULL, CG(active_op_array)->arg_info - 1);
}
- zend_free_foreach_and_switch_variables(ZEND_FREE_ON_JUMP);
+ zend_free_foreach_and_switch_variables(ZEND_FREE_ON_RETURN);
if (CG(context).in_finally) {
opline = zend_emit_op(NULL, ZEND_DISCARD_EXCEPTION, NULL, NULL);
@@ -3567,7 +3567,7 @@ void zend_compile_break_continue(zend_ast *ast) /* {{{ */
}
if (nest_level > 1) {
- generate_free_loop_var_ex(&CG(context).brk_cont_array[array_offset].loop_var, ZEND_FREE_ON_JUMP);
+ generate_free_loop_var_ex(&CG(context).brk_cont_array[array_offset].loop_var, ZEND_FREE_ON_BREAK);
}
array_offset = CG(context).brk_cont_array[array_offset].parent;
@@ -3637,7 +3637,7 @@ void zend_resolve_goto_label(zend_op_array *op_array, znode *label_node, zend_op
if (pass2_opline) {
free_vars++;
} else {
- generate_free_loop_var_ex(&CG(context).brk_cont_array[current].loop_var, ZEND_FREE_ON_JUMP);
+ generate_free_loop_var_ex(&CG(context).brk_cont_array[current].loop_var, ZEND_FREE_ON_BREAK);
}
}
current = CG(context).brk_cont_array[current].parent;