diff options
| author | Dmitry Stogov <dmitry@php.net> | 2005-06-22 08:33:00 +0000 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2005-06-22 08:33:00 +0000 |
| commit | 21e071be0692157ab8c6a86c44911e0bc80d75a8 (patch) | |
| tree | 8a75c49f8b7ecb501d7cb0283d5705c6ce6fa4b1 /Zend/zend_compile.c | |
| parent | 96d568f1fb797b0251b683cdb438dcb4acfb0eda (diff) | |
| download | php-git-21e071be0692157ab8c6a86c44911e0bc80d75a8.tar.gz | |
Fixed bug #33257 (array_splice() inconsistent when passed function instead of variable)
Diffstat (limited to 'Zend/zend_compile.c')
| -rw-r--r-- | Zend/zend_compile.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index b407dd4dbd..aaa488eba4 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1476,6 +1476,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) int original_op=op; zend_function **function_ptr_ptr, *function_ptr; int send_by_reference; + int send_function = 0; zend_stack_top(&CG(function_call_stack), (void **) &function_ptr_ptr); function_ptr = *function_ptr_ptr; @@ -1500,6 +1501,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) if (op == ZEND_SEND_VAR && zend_is_function_or_method_call(param)) { /* Method call */ op = ZEND_SEND_VAR_NO_REF; + send_function = ZEND_ARG_SEND_FUNCTION; } else if (op == ZEND_SEND_VAL && (param->op_type & (IS_VAR|IS_CV))) { op = ZEND_SEND_VAR_NO_REF; } @@ -1539,9 +1541,9 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) if (op == ZEND_SEND_VAR_NO_REF) { if (function_ptr) { - opline->extended_value = ZEND_ARG_COMPILE_TIME_BOUND | send_by_reference; + opline->extended_value = ZEND_ARG_COMPILE_TIME_BOUND | send_by_reference | send_function; } else { - opline->extended_value = 0; + opline->extended_value = send_function; } } else { if (function_ptr) { |
