From 2590a1ac11ca9bee727514482e15e36d2ac8db1c Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 8 Jun 2024 20:09:00 +0200 Subject: [PATCH] fix: prevent error.OutOfMemory when filtering very large messages --- src/tui/MessageFilter.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tui/MessageFilter.zig b/src/tui/MessageFilter.zig index d98eebf..d4ada18 100644 --- a/src/tui/MessageFilter.zig +++ b/src/tui/MessageFilter.zig @@ -121,7 +121,10 @@ pub const List = struct { } pub fn filter(self: *const List, from: tp.pid_ref, m: tp.message) error{Exit}!bool { - var buf: [tp.max_message_size]u8 = undefined; + var sfa = std.heap.stackFallback(4096, self.a); + const a = sfa.get(); + const buf = a.alloc(u8, m.buf.len) catch |e| return tp.exit_error(e); + defer a.free(buf); @memcpy(buf[0..m.buf.len], m.buf); const m_: tp.message = .{ .buf = buf[0..m.buf.len] }; var e: ?error{Exit} = null;