diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-08-10 12:02:52 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-08-10 12:02:52 +0000 |
commit | ebd4ab4d7875e2757adecb74e65fd31d846e6948 (patch) | |
tree | 0d755c30d9ab2dbcff7b7c24d26e39a378b4b7ed /Zend/zend_compile.c | |
parent | 779e6d203e4fa159120dfbc0644a3ed386bcf66e (diff) | |
download | php-git-ebd4ab4d7875e2757adecb74e65fd31d846e6948.tar.gz |
Fixed bug #25359 (array_multisort() doesn't work in a function if array is global or reference)
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r-- | Zend/zend_compile.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index f73c379312..0ab89a4766 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1499,7 +1499,12 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) } if (function_ptr) { - send_by_reference = ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset) ? ZEND_ARG_SEND_BY_REF : 0; + if (ARG_MAY_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) { + op = (param->op_type & (IS_VAR|IS_CV))?ZEND_SEND_REF:ZEND_SEND_VAL; + send_by_reference = 0; + } else { + send_by_reference = ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset) ? ZEND_ARG_SEND_BY_REF : 0; + } } else { send_by_reference = 0; } |