summaryrefslogtreecommitdiff
path: root/main/output.c
diff options
context:
space:
mode:
authorMichael Wallner <mike@php.net>2014-12-04 13:02:30 +0100
committerMichael Wallner <mike@php.net>2014-12-04 13:02:30 +0100
commitf0a17c293b5b240a4da27e6b5f89dbd9c9183488 (patch)
tree1d6d62edf7a1eb14a09a1d2fd2903c78e6337eea /main/output.c
parentf8e7b3d166a4aba2ebd9469731b01ccd30065184 (diff)
downloadphp-git-f0a17c293b5b240a4da27e6b5f89dbd9c9183488.tar.gz
Fix zend_fcall_info_arg*() to use ZVAL_COPY
As zend_fcall_info_args_clear() calls zval_ptr_dtor() we also have to increase the refcount of refcounted zvals added as params, like it is already done in zend_fcall_info_args_ex().
Diffstat (limited to 'main/output.c')
-rw-r--r--main/output.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/main/output.c b/main/output.c
index a1530b63fc..c8b41ba1eb 100644
--- a/main/output.c
+++ b/main/output.c
@@ -961,6 +961,7 @@ static inline php_output_handler_status_t php_output_handler_op(php_output_handl
ZVAL_STRINGL(&ob_data, handler->buffer.data, handler->buffer.used);
ZVAL_LONG(&ob_mode, (zend_long) context->op);
zend_fcall_info_argn(&handler->func.user->fci TSRMLS_CC, 2, &ob_data, &ob_mode);
+ zval_ptr_dtor(&ob_data);
#define PHP_OUTPUT_USER_SUCCESS(retval) ((Z_TYPE(retval) != IS_UNDEF) && !(Z_TYPE(retval) == IS_FALSE))
if (SUCCESS == zend_fcall_info_call(&handler->func.user->fci, &handler->func.user->fcc, &retval, NULL TSRMLS_CC) && PHP_OUTPUT_USER_SUCCESS(retval)) {