summaryrefslogtreecommitdiff
path: root/src/terminal/Parser.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/terminal/Parser.zig')
-rw-r--r--src/terminal/Parser.zig38
1 files changed, 28 insertions, 10 deletions
diff --git a/src/terminal/Parser.zig b/src/terminal/Parser.zig
index ec3f322f6..0223545e5 100644
--- a/src/terminal/Parser.zig
+++ b/src/terminal/Parser.zig
@@ -209,24 +209,42 @@ const MAX_INTERMEDIATE = 4;
const MAX_PARAMS = 24;
/// Current state of the state machine
-state: State = .ground,
+state: State,
/// Intermediate tracking.
-intermediates: [MAX_INTERMEDIATE]u8 = undefined,
-intermediates_idx: u8 = 0,
+intermediates: [MAX_INTERMEDIATE]u8,
+intermediates_idx: u8,
/// Param tracking, building
-params: [MAX_PARAMS]u16 = undefined,
-params_sep: Action.CSI.SepList = .initEmpty(),
-params_idx: u8 = 0,
-param_acc: u16 = 0,
-param_acc_idx: u8 = 0,
+params: [MAX_PARAMS]u16,
+params_sep: Action.CSI.SepList,
+params_idx: u8,
+param_acc: u16,
+param_acc_idx: u8,
/// Parser for OSC sequences
-osc_parser: osc.Parser = .{},
+osc_parser: osc.Parser,
pub fn init() Parser {
- return .{};
+ var result: Parser = .{
+ .state = .ground,
+ .intermediates_idx = 0,
+ .params_sep = .initEmpty(),
+ .params_idx = 0,
+ .param_acc = 0,
+ .param_acc_idx = 0,
+ .osc_parser = .init(),
+
+ .intermediates = undefined,
+ .params = undefined,
+ };
+ if (std.valgrind.runningOnValgrind() > 0) {
+ // Initialize our undefined fields so Valgrind can catch it.
+ // https://github.com/ziglang/zig/issues/19148
+ result.intermediates = undefined;
+ result.params = undefined;
+ }
+ return result;
}
pub fn deinit(self: *Parser) void {