From 1bd7dbfbc42af85ad5309759d6311427f2860de9 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 4 Mar 2019 17:14:55 -0600 Subject: [PATCH] vbscript: Handle carriage return in more places. This fixes a regression introduced by 5800c9ed23a5c720843445d91c8547925493df8a. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46772 Signed-off-by: Zebediah Figura Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/vbscript/lex.c | 9 ++++++--- dlls/vbscript/tests/run.c | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/vbscript/lex.c b/dlls/vbscript/lex.c index fa467f04dc2..739f3acd18c 100644 --- a/dlls/vbscript/lex.c +++ b/dlls/vbscript/lex.c @@ -225,7 +225,7 @@ static int parse_string_literal(parser_ctx_t *ctx, const WCHAR **ret) int len = 0; while(ctx->ptr < ctx->end) { - if(*ctx->ptr == '\n') { + if(*ctx->ptr == '\n' || *ctx->ptr == '\r') { FIXME("newline inside string literal\n"); return 0; } @@ -497,11 +497,14 @@ int parser_lex(void *lval, parser_ctx_t *ctx) ret = parse_next_token(lval, ctx); if(ret == '_') { skip_spaces(ctx); - if(*ctx->ptr != '\n') { + if(*ctx->ptr != '\n' && *ctx->ptr != '\r') { FIXME("'_' not followed by newline\n"); return 0; } - ctx->ptr++; + if(*ctx->ptr == '\r') + ctx->ptr++; + if(*ctx->ptr == '\n') + ctx->ptr++; continue; } if(ret != tNL || ctx->last_token != tNL) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 6be6c7fd02c..88ec994db98 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -2481,6 +2481,9 @@ static void run_tests(void) SET_EXPECT(global_success_d); SET_EXPECT(global_success_i); parse_script_a("' comment\r" + "x = _\r3\r" + "x = _\n3\r" + "x = _\r\n3\r" "Sub testsub(arg)\r" "If arg = 1 Then\r\r" "Call reportSuccess()\n\n"