diff options
author | Andi Gutmans <andi@php.net> | 1999-12-11 12:17:21 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 1999-12-11 12:17:21 +0000 |
commit | 419c68f9ecaf85b6f970f9084577bced39ce5f0a (patch) | |
tree | 5119351576ca815a31e604722efc21e384e05677 | |
parent | 0e2f4cc32645885fd9de086732efff3fd84bfe98 (diff) | |
download | php-git-419c68f9ecaf85b6f970f9084577bced39ce5f0a.tar.gz |
- Another small fix.
-rw-r--r-- | Zend/zend_execute.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index c7a7924343..cfe20ef837 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1549,8 +1549,11 @@ do_fcall_common: if (opline->extended_value) { retval_ptr_ptr = get_zval_ptr_ptr(&opline->op1, Ts, BP_VAR_R); - SEPARATE_ZVAL(retval_ptr_ptr); - (*retval_ptr_ptr)->is_ref = 1; + + if (!PZVAL_IS_REF(*retval_ptr_ptr)) { + SEPARATE_ZVAL(retval_ptr_ptr); + (*retval_ptr_ptr)->is_ref = 1; + } (*retval_ptr_ptr)->refcount++; efree(*EG(return_value_ptr_ptr)); (*EG(return_value_ptr_ptr)) = (*retval_ptr_ptr); @@ -1558,7 +1561,6 @@ do_fcall_common: retval_ptr = get_zval_ptr(&opline->op1, Ts, &EG(free_op1), BP_VAR_R); if (!EG(free_op1)) { /* Not a temp var */ - if (PZVAL_IS_REF(retval_ptr) && retval_ptr->refcount > 0) { **EG(return_value_ptr_ptr) = *retval_ptr; (*EG(return_value_ptr_ptr))->is_ref = 0; |