From d3eb4e84f98dd1c349a56fb25662b36b679a2503 Mon Sep 17 00:00:00 2001 From: Spencer Brower Date: Tue, 9 Jun 2026 10:53:49 -0400 Subject: [PATCH] fix: Fixed issue with buffer size. --- src/main.zig | 6 ++++-- src/tabula.zig | 46 ++++++++++++++++++++++++---------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main.zig b/src/main.zig index b46eb34..a4bc9eb 100644 --- a/src/main.zig +++ b/src/main.zig @@ -23,10 +23,12 @@ fn run( arena: std.mem.Allocator, args: []const [:0]const u8, ) !void { + const page_size = std.heap.pageSize(); + const cmd = envr.root.parse(args[1..]); switch (cmd) { .envr => { - var stdout_buffer: [4096]u8 = undefined; + var stdout_buffer: [page_size]u8 = undefined; var stdout_file_writer: Io.File.Writer = .init(.stdout(), io, &stdout_buffer); const stdout_writer = &stdout_file_writer.interface; @@ -51,7 +53,7 @@ fn run( ); }, .list => { - var stdout_buffer: [1024]u8 = undefined; + var stdout_buffer: [page_size]u8 = undefined; var stdout_file_writer: Io.File.Writer = .init(.stdout(), io, &stdout_buffer); const stdout_writer = &stdout_file_writer.interface; diff --git a/src/tabula.zig b/src/tabula.zig index 6cc5cfe..d193d6a 100644 --- a/src/tabula.zig +++ b/src/tabula.zig @@ -27,38 +27,37 @@ pub fn Table( // Print body for (self.items) |item| { - _ = try writer.write(sep); + try writer.writeAll(sep); comptime var itr = fields.iterator(); comptime var i: usize = 0; inline while (comptime itr.next()) |c| : (i += 1) { - _ = try writer.write(" "); + try writer.writeByte(' '); try write_aligned(writer, @field(item, @tagName(c)), max_column_widths[i], .left); try writer.print(" {s}", .{sep}); } - _ = try writer.write("\n"); + try writer.writeAll("\n"); } // Print post-body { - _ = try writer.write(bl); + try writer.writeAll(bl); var itr = fields.iterator(); var i: usize = 0; while (itr.next()) |_| : (i += 1) { if (i > 0) { - _ = try writer.write(bm); + try writer.writeAll(bm); } const padding = max_column_widths[i] + 2; for (0..padding) |_| { - _ = try writer.write(hor); + try writer.writeAll(hor); } } - _ = try writer.write(br); - _ = try writer.write("\n"); + try writer.writeAll(br ++ "\n"); } } }; @@ -96,29 +95,29 @@ fn header( // Print Pre-Header { - _ = try writer.write(tl); + try writer.writeAll(tl); inline for (0..comptime fields.count()) |i| { if (i > 0) { - _ = try writer.write(tm); + try writer.writeAll(tm); } const padding = max_column_widths[i] + 2; for (0..padding) |_| { - _ = try writer.write(hor); + try writer.writeAll(hor); } } - _ = try writer.write(tr ++ "\n"); + try writer.writeAll(tr ++ "\n"); } // Main Header { - _ = try writer.write(sep); + try writer.writeAll(sep); comptime var itr = fields.iterator(); comptime var i: usize = 0; inline while (comptime itr.next()) |field| : (i += 1) { - _ = try writer.write(" "); + try writer.writeByte(' '); try write_aligned( writer, @tagName(field), @@ -128,24 +127,24 @@ fn header( try writer.print(" {s}", .{sep}); } - try writer.print("\n", .{}); + try writer.writeByte('\n'); } // Print post-header { - _ = try writer.write(ml); + try writer.writeAll(ml); inline for (0..comptime fields.count()) |i| { if (i > 0) { - _ = try writer.write(mm); + try writer.writeAll(mm); } const padding = max_column_widths[i] + 2; for (0..padding) |_| { - _ = try writer.write(hor); + try writer.writeAll(hor); } } - _ = try writer.write(mr ++ "\n"); + try writer.writeAll(mr ++ "\n"); } } @@ -155,6 +154,9 @@ fn write_aligned( max_width: usize, alignment: Alignment, ) !void { + std.debug.assert(data.len > 0); + std.debug.assert(max_width >= data.len); + const padding: [2]usize = switch (alignment) { .left => .{ 0, max_width - data.len }, .right => .{ max_width - data.len, 0 }, @@ -166,13 +168,13 @@ fn write_aligned( }; for (0..padding[0]) |_| { - _ = try writer.write(" "); + try writer.writeByte(' '); } - _ = try writer.write(data); + try writer.writeAll(data); for (0..padding[1]) |_| { - _ = try writer.write(" "); + try writer.writeByte(' '); } }