From d708d3c596aa16afa9ca4906ea1fa6579b74b494 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 11 Mar 2014 22:33:28 +0400 Subject: Fixed passing arguments by reference from internal functions --- Zend/zend_execute_API.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Zend/zend_execute_API.c') diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 8faba97fc7..ea02c0f160 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -856,7 +856,12 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TS return FAILURE; } - zval_copy_ctor(&fci->params[i]); + if (Z_REFCOUNTED(fci->params[i])) { + Z_DELREF(fci->params[i]); + } + ZVAL_DUP(&tmp, &fci->params[i]); + ZVAL_NEW_REF(&fci->params[i], &tmp); + Z_ADDREF(fci->params[i]); } else if (!Z_ISREF(fci->params[i])) { if (Z_REFCOUNTED(fci->params[i])) { Z_ADDREF(fci->params[i]); -- cgit v1.2.1