diff options
| author | Michael Wallner <mike@php.net> | 2012-02-14 19:31:54 +0000 |
|---|---|---|
| committer | Michael Wallner <mike@php.net> | 2012-02-14 19:31:54 +0000 |
| commit | 7a58d9f6794d6786891f83bfb32ecfca7161d6dd (patch) | |
| tree | e13bfb4fc7f104a4c0751754538a08609809ff23 | |
| parent | 4d600bda7083ebaeb71d94b0fb6df3a760268d45 (diff) | |
| download | php-git-7a58d9f6794d6786891f83bfb32ecfca7161d6dd.tar.gz | |
fix compat function not passing along input buffer with php_output_context_pass() if the output_handler_func does not set out_str
| -rw-r--r-- | main/output.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/main/output.c b/main/output.c index f0a130fcc3..bf0c775e70 100644 --- a/main/output.c +++ b/main/output.c @@ -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; |
