mirror of
https://github.com/php/php-src.git
synced 2024-12-25 01:40:50 +08:00
Improve fix for #76046
Also locate the JMP at the start of the foreach. Patch suggested by Derick.
This commit is contained in:
parent
d6595f276f
commit
b565c85b9e
@ -4797,6 +4797,10 @@ void zend_compile_foreach(zend_ast *ast) /* {{{ */
|
|||||||
|
|
||||||
zend_compile_stmt(stmt_ast);
|
zend_compile_stmt(stmt_ast);
|
||||||
|
|
||||||
|
/* Place JMP and FE_FREE on the line where foreach starts. It would be
|
||||||
|
* better to use the end line, but this information is not available
|
||||||
|
* currently. */
|
||||||
|
CG(zend_lineno) = ast->lineno;
|
||||||
zend_emit_jump(opnum_fetch);
|
zend_emit_jump(opnum_fetch);
|
||||||
|
|
||||||
opline = &CG(active_op_array)->opcodes[opnum_reset];
|
opline = &CG(active_op_array)->opcodes[opnum_reset];
|
||||||
@ -4807,7 +4811,6 @@ void zend_compile_foreach(zend_ast *ast) /* {{{ */
|
|||||||
|
|
||||||
zend_end_loop(opnum_fetch, &reset_node);
|
zend_end_loop(opnum_fetch, &reset_node);
|
||||||
|
|
||||||
CG(zend_lineno) = ast->lineno;
|
|
||||||
opline = zend_emit_op(NULL, ZEND_FE_FREE, &reset_node, NULL);
|
opline = zend_emit_op(NULL, ZEND_FE_FREE, &reset_node, NULL);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
Loading…
Reference in New Issue
Block a user