diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-06-22 08:31:19 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-06-22 08:31:19 +0000 |
commit | 21bdd33fffed2bc4762359ff7b7da50154f0e104 (patch) | |
tree | c64cb8e5a4f9f6b6c9031d7bb9999cd3348834d6 /Zend/zend_execute.c | |
parent | b857a3579f3faa29b8942466285ac9dcf52ffcd0 (diff) | |
download | php-git-21bdd33fffed2bc4762359ff7b7da50154f0e104.tar.gz |
Fixed bug #33257 (array_splice() inconsistent when passed function instead of variable)
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r-- | Zend/zend_execute.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 514f47d167..711f89dd57 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -3037,7 +3037,10 @@ int zend_send_var_no_ref_handler(ZEND_OPCODE_HANDLER_ARGS) } else if (!ARG_SHOULD_BE_SENT_BY_REF(EX(fbc), opline->op2.u.opline_num)) { return zend_send_by_var_helper(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } - { + if ((opline->extended_value & ZEND_ARG_SEND_FUNCTION) && + !EX_T(opline->op1.u.var).var.fcall_returned_reference) { + zend_error(E_ERROR, "Only variables can be passed by reference"); + } else { zval *varptr; varptr = get_zval_ptr(&opline->op1, EX(Ts), &EG(free_op1), BP_VAR_R); |