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:
parent
c348aa9656
commit
629e6048aa
1 changed files with 6 additions and 1 deletions
|
@ -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()))
|
||||||
|
|
Loading…
Add table
Reference in a new issue