Mercurial > urweb
diff src/c/urweb.c @ 1413:45bd58736bb2
Fix issues with empty page buffers for tasks
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 23 Jan 2011 14:59:59 -0500 |
parents | 55d0c8b01d18 |
children | d0786ff9bb22 |
line wrap: on
line diff
--- a/src/c/urweb.c Sun Jan 23 11:18:24 2011 -0500 +++ b/src/c/urweb.c Sun Jan 23 14:59:59 2011 -0500 @@ -462,8 +462,10 @@ ctx->get_header = NULL; ctx->get_header_data = NULL; - uw_buffer_init(uw_headers_max, &ctx->outHeaders, 0); - uw_buffer_init(uw_page_max, &ctx->page, 0); + uw_buffer_init(uw_headers_max, &ctx->outHeaders, 1); + ctx->outHeaders.start[0] = 0; + uw_buffer_init(uw_page_max, &ctx->page, 1); + ctx->page.start[0] = 0; ctx->returning_indirectly = 0; uw_buffer_init(uw_heap_max, &ctx->heap, uw_min_heap); uw_buffer_init(uw_script_max, &ctx->script, 1); @@ -1498,10 +1500,11 @@ static void uw_writec_unsafe(uw_context ctx, char c) { *(ctx->page.front)++ = c; + *ctx->page.front = 0; } void uw_writec(uw_context ctx, char c) { - uw_check(ctx, 1); + uw_check(ctx, 2); uw_writec_unsafe(ctx, c); } @@ -3144,6 +3147,9 @@ if (ctx->transactionals[i].free) ctx->transactionals[i].free(ctx->transactionals[i].data, 0); + if (*ctx->page.front) + uw_writec(ctx, 0); + // Splice script data into appropriate part of page if (ctx->returning_indirectly || ctx->script_header[0] == 0) { char *start = strstr(ctx->page.start, "<sc>");