summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>1999-11-16 18:30:06 +0000
committerAndi Gutmans <andi@php.net>1999-11-16 18:30:06 +0000
commitdbb67ab9dce83b17d028a7e6277f7044c409eb77 (patch)
tree35d0dc457d4ce4eee0f8c024df46d5102aa8f1ee /Zend/zend_compile.c
parent87d6372a1451ba614ad013a8c77e493eb2072ad0 (diff)
downloadphp-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.c14
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];