diff --git a/src/cli/Pager.zig b/src/cli/Pager.zig index 73b8e1f26..701925228 100644 --- a/src/cli/Pager.zig +++ b/src/cli/Pager.zig @@ -15,9 +15,6 @@ child: ?std.process.Child = null, /// stdout paths. file_writer: std.fs.File.Writer = undefined, -/// The write buffer. -buffer: [4096]u8 = undefined, - /// Initialize the pager. If stdout is a TTY, this spawns the pager /// process. Otherwise, output goes directly to stdout. pub fn init(alloc: Allocator) Pager { @@ -25,11 +22,11 @@ pub fn init(alloc: Allocator) Pager { } /// Writes to the pager process if available; otherwise, stdout. -pub fn writer(self: *Pager) *std.Io.Writer { +pub fn writer(self: *Pager, buffer: []u8) *std.Io.Writer { if (self.child) |child| { - self.file_writer = child.stdin.?.writer(&self.buffer); + self.file_writer = child.stdin.?.writer(buffer); } else { - self.file_writer = std.fs.File.stdout().writer(&self.buffer); + self.file_writer = std.fs.File.stdout().writer(buffer); } return &self.file_writer.interface; } @@ -84,6 +81,7 @@ test "pager: default writer" { var pager: Pager = .{}; defer pager.deinit(); try std.testing.expect(pager.child == null); - const w = pager.writer(); + var buf: [4096]u8 = undefined; + const w = pager.writer(&buf); try w.writeAll("hello"); } diff --git a/src/cli/explain_config.zig b/src/cli/explain_config.zig index d1add0765..4f034afef 100644 --- a/src/cli/explain_config.zig +++ b/src/cli/explain_config.zig @@ -94,7 +94,8 @@ pub fn run(alloc: Allocator) !u8 { var pager: Pager = if (!no_pager) .init(alloc) else .{}; defer pager.deinit(); - const writer = pager.writer(); + var buffer: [4096]u8 = undefined; + const writer = pager.writer(&buffer); if (text) |t| { try writer.writeAll(t);