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.
This commit is contained in:
CJ van den Berg 2024-08-29 16:53:54 +02:00
parent c348aa9656
commit 629e6048aa
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -200,7 +200,12 @@ fn receive(self: *Self, from: tp.pid_ref, m: tp.message) tp.result {
defer frame.deinit(); defer frame.deinit();
instance_ = self; instance_ = self;
defer instance_ = null; 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| { self.receive_safe(from, m) catch |e| {
if (std.mem.eql(u8, "normal", tp.error_text())) if (std.mem.eql(u8, "normal", tp.error_text()))