From 4a3e2b35b9fa41d1910b82a253a79fc8de25be8f Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 14 Dec 2022 21:10:22 -0800 Subject: [PATCH] terminal: parse table needs to have room for all chars --- src/terminal/Parser.zig | 5 ++++- src/terminal/parse_table.zig | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/terminal/Parser.zig b/src/terminal/Parser.zig index 69087dc58..855ae640e 100644 --- a/src/terminal/Parser.zig +++ b/src/terminal/Parser.zig @@ -245,7 +245,10 @@ pub fn next(self: *Parser, c: u8) [3]?Action { // In debug mode, we log bad state transitions. if (builtin.mode == .Debug) { if (next_state == .anywhere) { - log.warn("state transition to 'anywhere', likely bug: {x}", .{c}); + log.debug( + "state transition to 'anywhere' from '{}', likely binary input: {x}", + .{ self.state, c }, + ); } } diff --git a/src/terminal/parse_table.zig b/src/terminal/parse_table.zig index 6f0ea46a6..49e17332f 100644 --- a/src/terminal/parse_table.zig +++ b/src/terminal/parse_table.zig @@ -38,7 +38,7 @@ fn genTableType() type { const max_u8 = std.math.maxInt(u8); const stateInfo = @typeInfo(State); const max_state = stateInfo.Enum.fields.len; - return [max_u8][max_state]Transition; + return [max_u8 + 1][max_state]Transition; } /// Function to generate the full state transition table for VT emulation. @@ -47,9 +47,9 @@ fn genTable() Table { var result: Table = undefined; // Initialize everything so every state transition exists - var i: u8 = 0; + var i: usize = 0; while (i < result.len) : (i += 1) { - var j: u8 = 0; + var j: usize = 0; while (j < result[0].len) : (j += 1) { result[i][j] = transition(.anywhere, .none); }