diff options
author | Nikita Popov <nikic@php.net> | 2016-09-30 22:08:08 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-09-30 22:10:01 +0200 |
commit | 02ba9d71abc9f830fc9707eb2a7daabf37298f7d (patch) | |
tree | 34cc2775549627b27367fb4ca9da7b495c7cc7f7 /ext/standard/basic_functions.c | |
parent | e63443d8251227df26d9ca114f1bc8e7c0f1651f (diff) | |
download | php-git-02ba9d71abc9f830fc9707eb2a7daabf37298f7d.tar.gz |
Unwrap reference returns in cufa etc
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r-- | ext/standard/basic_functions.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index fa90206a45..13e8a4e6eb 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -4823,6 +4823,9 @@ PHP_FUNCTION(call_user_func) fci.retval = &retval; if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { + if (Z_ISREF(retval)) { + zend_unwrap_reference(&retval); + } ZVAL_COPY_VALUE(return_value, &retval); } } @@ -4846,6 +4849,9 @@ PHP_FUNCTION(call_user_func_array) fci.retval = &retval; if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { + if (Z_ISREF(retval)) { + zend_unwrap_reference(&retval); + } ZVAL_COPY_VALUE(return_value, &retval); } @@ -4880,6 +4886,9 @@ PHP_FUNCTION(forward_static_call) } if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { + if (Z_ISREF(retval)) { + zend_unwrap_reference(&retval); + } ZVAL_COPY_VALUE(return_value, &retval); } } @@ -4908,6 +4917,9 @@ PHP_FUNCTION(forward_static_call_array) } if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { + if (Z_ISREF(retval)) { + zend_unwrap_reference(&retval); + } ZVAL_COPY_VALUE(return_value, &retval); } |