From 79762d0e74315f3c92a4884d78e0d773aeb611dc Mon Sep 17 00:00:00 2001 From: Ryan Liptak Date: Mon, 20 Sep 2021 17:10:32 -0700 Subject: [PATCH] tokenizer: Fix index-out-of-bounds on string_literal_backslash right before EOF --- lib/std/zig/tokenizer.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/std/zig/tokenizer.zig b/lib/std/zig/tokenizer.zig index 3fdbb3ec7b03..72d597f07794 100644 --- a/lib/std/zig/tokenizer.zig +++ b/lib/std/zig/tokenizer.zig @@ -700,7 +700,7 @@ pub const Tokenizer = struct { }, .string_literal_backslash => switch (c) { - '\n' => { + 0, '\n' => { result.tag = .invalid; break; }, @@ -1919,6 +1919,10 @@ test "tokenizer - invalid builtin identifiers" { try testTokenize("@0()", &.{ .invalid, .integer_literal, .l_paren, .r_paren }); } +test "tokenizer - backslash before eof in string literal" { + try testTokenize("\"\\", &.{.invalid}); +} + fn testTokenize(source: [:0]const u8, expected_tokens: []const Token.Tag) !void { var tokenizer = Tokenizer.init(source); for (expected_tokens) |expected_token_id| {