From 629e6048aa2bed4fa167283629b13c1af113a467 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 29 Aug 2024 16:53:54 +0200 Subject: [PATCH] fix: use thespian.store/restore_error in tui.deinit This prevents errors in tui.deinit, for example DEADSEND messages from timers, from over writing the final exit message from the tui actor. --- src/tui/tui.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tui/tui.zig b/src/tui/tui.zig index c65bc51..b93666f 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -200,7 +200,12 @@ fn receive(self: *Self, from: tp.pid_ref, m: tp.message) tp.result { defer frame.deinit(); instance_ = self; defer instance_ = null; - errdefer self.deinit(); + errdefer { + var err: tp.ScopedError = .{}; + tp.store_error(&err); + defer tp.restore_error(&err); + self.deinit(); + } self.receive_safe(from, m) catch |e| { if (std.mem.eql(u8, "normal", tp.error_text()))