From 36c6e95dfc61d79ad82aba24b1a1957bdea5f17c Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 14 Dec 2022 20:57:31 -0800 Subject: [PATCH] terminal: ignore invalid C0 escape codes --- src/terminal/ansi.zig | 4 ++++ src/terminal/stream.zig | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/terminal/ansi.zig b/src/terminal/ansi.zig index a6aa9c832..7effc3440 100644 --- a/src/terminal/ansi.zig +++ b/src/terminal/ansi.zig @@ -23,6 +23,10 @@ pub const C0 = enum(u7) { SO = 0x0E, /// Shift in SI = 0x0F, + + // Non-exhaustive so that @intToEnum never fails since the inputs are + // user-generated. + _, }; /// The SGR rendition aspects that can be set, sometimes known as attributes. diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index eb1a73998..1b5467b68 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -73,7 +73,6 @@ pub fn Stream(comptime Handler: type) type { tracy.value(@intCast(u64, c)); defer tracy.end(); - // log.warn("C0: {}", .{c}); switch (@intToEnum(ansi.C0, c)) { .NUL => {}, @@ -122,6 +121,8 @@ pub fn Stream(comptime Handler: type) type { try self.handler.invokeCharset(.GL, .G0, false) else log.warn("unimplemented invokeCharset: {x}", .{c}), + + else => log.warn("invalid C0 character, ignoring: {x}", .{c}), } }