diff options
| author | Andi Gutmans <andi@php.net> | 1999-11-16 18:30:06 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 1999-11-16 18:30:06 +0000 |
| commit | dbb67ab9dce83b17d028a7e6277f7044c409eb77 (patch) | |
| tree | 35d0dc457d4ce4eee0f8c024df46d5102aa8f1ee /Zend/zend_compile.c | |
| parent | 87d6372a1451ba614ad013a8c77e493eb2072ad0 (diff) | |
| download | php-git-dbb67ab9dce83b17d028a7e6277f7044c409eb77.tar.gz | |
- Add support for used_return_value passed to internal functions.
Diffstat (limited to 'Zend/zend_compile.c')
| -rw-r--r-- | Zend/zend_compile.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index e1390590b4..8e37655b6a 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -622,11 +622,17 @@ void do_add_variable(znode *result, znode *op1, znode *op2 CLS_DC) void do_free(znode *op1 CLS_DC) { if (op1->op_type==IS_TMP_VAR) { - zend_op *opline = get_next_op(CG(active_op_array) CLS_CC); + zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1]; - opline->opcode = ZEND_FREE; - opline->op1 = *op1; - SET_UNUSED(opline->op2); + if ((opline->opcode == ZEND_DO_FCALL) || (opline->opcode == ZEND_DO_FCALL_BY_NAME)) { + opline->result.u.EA.type |= EXT_TYPE_UNUSED; + } else { + zend_op *opline = get_next_op(CG(active_op_array) CLS_CC); + + opline->opcode = ZEND_FREE; + opline->op1 = *op1; + SET_UNUSED(opline->op2); + } } else if (op1->op_type==IS_VAR) { zend_op *opline = &CG(active_op_array)->opcodes[CG(active_op_array)->last-1]; |
