]> granicus.if.org Git - php/commitdiff
fix compat function not passing along input buffer with php_output_context_pass(...
authorMichael Wallner <mike@php.net>
Tue, 14 Feb 2012 19:31:54 +0000 (19:31 +0000)
committerMichael Wallner <mike@php.net>
Tue, 14 Feb 2012 19:31:54 +0000 (19:31 +0000)
main/output.c

index f0a130fcc36869178ed4a251282066a4a8dadce8..bf0c775e700e3c95cab7441f6c669016d9441270 100644 (file)
@@ -1260,11 +1260,19 @@ static int php_output_handler_compat_func(void **handler_context, php_output_con
        PHP_OUTPUT_TSRMLS(output_context);
 
        if (func) {
-               uint safe_out_len;
+               char *out_str = NULL;
+               uint out_len = 0;
+
+               func(output_context->in.data, output_context->in.used, &out_str, &out_len, output_context->op TSRMLS_CC);
+
+               if (out_str) {
+                       output_context->out.data = out_str;
+                       output_context->out.used = out_len;
+                       output_context->out.free = 1;
+               } else {
+                       php_output_context_pass(output_context);
+               }
 
-               func(output_context->in.data, output_context->in.used, &output_context->out.data, &safe_out_len, output_context->op TSRMLS_CC);
-               output_context->out.used = safe_out_len;
-               output_context->out.free = 1;
                return SUCCESS;
        }
        return FAILURE;