diff options
| author | Ryan Liptak <squeek502@hotmail.com> | 2021-09-20 17:10:32 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-09-20 20:16:14 -0400 |
| commit | 2a728f6e5f0c5d12e110313342e714f9f23c4044 (patch) | |
| tree | 08971335e990f715eb392e35da3d9c0a0293c0cc | |
| parent | 380ca2685548ac916c825842033671ac8a97f577 (diff) | |
| download | zig-2a728f6e5f0c5d12e110313342e714f9f23c4044.tar.gz zig-2a728f6e5f0c5d12e110313342e714f9f23c4044.zip | |
tokenizer: Fix index-out-of-bounds on string_literal_backslash right before EOF
| -rw-r--r-- | lib/std/zig/tokenizer.zig | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/std/zig/tokenizer.zig b/lib/std/zig/tokenizer.zig index 3fdbb3ec7b..72d597f077 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| { |
