From 4b4301a132b8d1144ed08c79b2ad918d70d5d37c Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Fri, 27 Apr 2012 09:52:16 -0400 Subject: Avoid generating empty ", 9); + // Any freeform JavaScript to include? + if (uw_buffer_used(&ctx->script) > 0) { + size_t lenH = strlen(ctx->script_header), len = uw_buffer_used(&ctx->script); + size_t lenP = lenH + 40 + len; + char *start = s + 6, *oldPage = ctx->page.start; + + ctx_uw_buffer_check(ctx, "page", &ctx->page, uw_buffer_used(&ctx->page) + lenP); + start += ctx->page.start - oldPage; + memmove(start + lenP, start, uw_buffer_used(&ctx->page) - (start - ctx->page.start) + 1); + ctx->page.front += lenP; + memcpy(start, ctx->script_header, lenH); + memcpy(start + lenH, "", 9); + } else { + size_t lenH = strlen(ctx->script_header); + char *start = s + 6, *oldPage = ctx->page.start; + + ctx_uw_buffer_check(ctx, "page", &ctx->page, uw_buffer_used(&ctx->page) + lenH); + start += ctx->page.start - oldPage; + memmove(start + lenH, start, uw_buffer_used(&ctx->page) - (start - ctx->page.start) + 1); + ctx->page.front += lenH; + memcpy(start, ctx->script_header, lenH); + } } else { // No . At this point, add it, with ", 16); + if (uw_buffer_used(&ctx->script) > 0) { + size_t lenH = strlen(ctx->script_header), len = uw_buffer_used(&ctx->script); + size_t lenP = lenH + 53 + len; + char *start = s, *oldPage = ctx->page.start; + + ctx_uw_buffer_check(ctx, "page", &ctx->page, uw_buffer_used(&ctx->page) + lenP); + start += ctx->page.start - oldPage; + memmove(start + lenP, start, uw_buffer_used(&ctx->page) - (start - ctx->page.start) + 1); + ctx->page.front += lenP; + memcpy(start, "", 6); + memcpy(start + 6, ctx->script_header, lenH); + memcpy(start + 6 + lenH, "", 16); + } else { + size_t lenH = strlen(ctx->script_header); + size_t lenP = lenH + 13; + char *start = s, *oldPage = ctx->page.start; + + ctx_uw_buffer_check(ctx, "page", &ctx->page, uw_buffer_used(&ctx->page) + lenP); + start += ctx->page.start - oldPage; + memmove(start + lenP, start, uw_buffer_used(&ctx->page) - (start - ctx->page.start) + 1); + ctx->page.front += lenP; + memcpy(start, "", 6); + memcpy(start + 6, ctx->script_header, lenH); + memcpy(start + 6 + lenH, "", 7); + } } } } diff --git a/tests/headDyn.ur b/tests/headDyn.ur index 3ad0ea2a..02fb0e03 100644 --- a/tests/headDyn.ur +++ b/tests/headDyn.ur @@ -8,3 +8,13 @@ fun main () : transaction page = + +fun main2 () : transaction page = + return + + Test + + +