summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>1999-12-11 12:17:21 +0000
committerAndi Gutmans <andi@php.net>1999-12-11 12:17:21 +0000
commit419c68f9ecaf85b6f970f9084577bced39ce5f0a (patch)
tree5119351576ca815a31e604722efc21e384e05677
parent0e2f4cc32645885fd9de086732efff3fd84bfe98 (diff)
downloadphp-git-419c68f9ecaf85b6f970f9084577bced39ce5f0a.tar.gz
- Another small fix.
-rw-r--r--Zend/zend_execute.c8
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;