From d6e9cec04d92fc889e4a1813e1fc4f381fe99d3c Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 28 Oct 2025 21:58:33 +0100 Subject: [PATCH] fix: prevent Widget.msg and EventHandler.msg from being corrupted by thespian.message.send --- src/EventHandler.zig | 6 ++++-- src/tui/Widget.zig | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/EventHandler.zig b/src/EventHandler.zig index 3f54463..c7fac8c 100644 --- a/src/EventHandler.zig +++ b/src/EventHandler.zig @@ -108,7 +108,8 @@ pub fn dynamic_cast(self: Self, comptime T: type) ?*T { } pub fn msg(self: Self, m: anytype) tp.result { - return self.vtable.send(self.ptr, tp.self_pid(), tp.message.fmt(m)); + var buf: [tp.max_message_size]u8 = undefined; + return self.vtable.send(self.ptr, tp.self_pid(), tp.message.fmtbuf(&buf, m) catch |e| std.debug.panic("EventHandler.msg: {any}", .{e})); } pub fn send(self: Self, from_: tp.pid_ref, m: tp.message) tp.result { @@ -172,7 +173,8 @@ pub const List = struct { } pub fn msg(self: *const List, m: anytype) tp.result { - return self.send(tp.self_pid(), tp.message.fmt(m)); + var buf: [tp.max_message_size]u8 = undefined; + return self.send(tp.self_pid(), tp.message.fmtbuf(&buf, m) catch |e| std.debug.panic("EventHandler.List.msg: {any}", .{e})); } pub fn send(self: *const List, from: tp.pid_ref, m: tp.message) tp.result { diff --git a/src/tui/Widget.zig b/src/tui/Widget.zig index d6a41ce..a9035ca 100644 --- a/src/tui/Widget.zig +++ b/src/tui/Widget.zig @@ -178,7 +178,8 @@ pub fn deinit(self: Self, allocator: Allocator) void { } pub fn msg(self: *const Self, m: anytype) error{Exit}!bool { - return self.vtable.send(self.ptr, tp.self_pid(), tp.message.fmt(m)); + var buf: [tp.max_message_size]u8 = undefined; + return self.vtable.send(self.ptr, tp.self_pid(), tp.message.fmtbuf(&buf, m) catch |e| std.debug.panic("Widget.msg: {any}", .{e})); } pub fn send(self: *const Self, from_: tp.pid_ref, m: tp.message) error{Exit}!bool {