summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2003-09-07 23:09:30 +0000
committerMarcus Boerger <helly@php.net>2003-09-07 23:09:30 +0000
commitcdc5d69ec22ff5fa01723466df7134f682ee1aff (patch)
treed151096c917c2fab9d18a5207c93a86447c9ed48
parent366a4b7f94746a3202651c74bea39fda438fea20 (diff)
downloadphp-git-cdc5d69ec22ff5fa01723466df7134f682ee1aff.tar.gz
Fix foreach() called with non array
-rw-r--r--Zend/zend_execute.c10
1 files 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();
}