From: Michael Wallner Date: Wed, 16 Feb 2005 19:33:14 +0000 (+0000) Subject: * don't restart "default output handler" X-Git-Tag: RELEASE_0_5_0~15 X-Git-Url: https://git.m6w6.name/?a=commitdiff_plain;h=838a50c68e93e551f6d2b981cfb9bef4e65fbbb2;p=m6w6%2Fext-http * don't restart "default output handler" * copy text_length, too --- diff --git a/http_api.c b/http_api.c index b099b5a..8690d9b 100644 --- a/http_api.c +++ b/http_api.c @@ -844,6 +844,7 @@ static STATUS http_ob_stack_get(php_ob_buffer *o, php_ob_buffer **s) php_ob_buffer *b = emalloc(sizeof(php_ob_buffer)); b->handler_name = estrdup(o->handler_name); b->buffer = estrndup(o->buffer, o->text_length); + b->text_length = o->text_length; b->chunk_size = o->chunk_size; b->erase = o->erase; s[i++] = b; @@ -1134,12 +1135,14 @@ PHP_HTTP_API STATUS _http_start_ob_handler(php_output_handler_func_t handler_fun php_end_ob_buffer(0, 0 TSRMLS_CC); } } - + php_ob_set_internal_handler(handler_func, chunk_size, handler_name, erase TSRMLS_CC); for (i = 0; i < count; i++) { php_ob_buffer *s = stack[i]; - php_start_ob_buffer_named(s->handler_name, s->chunk_size, s->erase TSRMLS_CC); + if (strcmp(s->handler_name, "default output handler")) { + php_start_ob_buffer_named(s->handler_name, s->chunk_size, s->erase TSRMLS_CC); + } php_body_write(s->buffer, s->text_length TSRMLS_CC); }