From cdc5d69ec22ff5fa01723466df7134f682ee1aff Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Sun, 7 Sep 2003 23:09:30 +0000 Subject: [PATCH] Fix foreach() called with non array --- Zend/zend_execute.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 52fc671729..6d0111f936 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -3549,21 +3549,21 @@ int zend_fe_reset_handler(ZEND_OPCODE_HANDLER_ARGS) } } + PZVAL_LOCK(array_ptr); + EX_T(EX(opline)->result.u.var).var.ptr = array_ptr; + EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr; + if ((fe_ht = HASH_OF(array_ptr)) != NULL) { /* probably redundant */ zend_hash_internal_pointer_reset(fe_ht); } else { zend_error(E_WARNING, "Invalid argument supplied for foreach()"); - EX(opline) = op_array->opcodes+EX(opline)->op1.u.opline_num; + EX(opline)++; EX(opline) = op_array->opcodes+EX(opline)->op2.u.opline_num; return 0; } - PZVAL_LOCK(array_ptr); - EX_T(EX(opline)->result.u.var).var.ptr = array_ptr; - EX_T(EX(opline)->result.u.var).var.ptr_ptr = &EX_T(EX(opline)->result.u.var).var.ptr; - NEXT_OPCODE(); } -- 2.40.0