diff options
author | Marcus Boerger <helly@php.net> | 2003-09-07 23:09:30 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-09-07 23:09:30 +0000 |
commit | cdc5d69ec22ff5fa01723466df7134f682ee1aff (patch) | |
tree | d151096c917c2fab9d18a5207c93a86447c9ed48 | |
parent | 366a4b7f94746a3202651c74bea39fda438fea20 (diff) | |
download | php-git-cdc5d69ec22ff5fa01723466df7134f682ee1aff.tar.gz |
Fix foreach() called with non array
-rw-r--r-- | Zend/zend_execute.c | 10 |
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(); } |