aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Liptak <squeek502@hotmail.com>2021-09-20 17:10:32 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-09-20 20:16:14 -0400
commit2a728f6e5f0c5d12e110313342e714f9f23c4044 (patch)
tree08971335e990f715eb392e35da3d9c0a0293c0cc
parent380ca2685548ac916c825842033671ac8a97f577 (diff)
downloadzig-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.zig6
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| {