fix: crash on shutdown from dangling logger references
This commit is contained in:
parent
823d066a58
commit
e2c565dfee
11 changed files with 38 additions and 16 deletions
|
@ -107,7 +107,7 @@ pub const List = struct {
|
|||
|
||||
pub fn add(self: *List, h: MessageFilter) !void {
|
||||
(try self.list.addOne()).* = h;
|
||||
// @import("log").logger("MessageFilter").print("add: {d} {s}", .{ self.list.items.len, self.list.items[self.list.items.len - 1].vtable.type_name });
|
||||
// @import("log").print("MessageFilter", "add: {d} {s}", .{ self.list.items.len, self.list.items[self.list.items.len - 1].vtable.type_name });
|
||||
}
|
||||
|
||||
pub fn remove(self: *List, h: MessageFilter) !void {
|
||||
|
|
|
@ -46,12 +46,12 @@ pub fn Closure(comptime T: type) type {
|
|||
pub fn register(self: *Self) !void {
|
||||
if (command_names.get(self.vtbl.name)) |id| {
|
||||
self.vtbl.id = id;
|
||||
reAddCommand(&self.vtbl) catch |e| return log.logger("cmd").err("reAddCommand", e);
|
||||
// log.logger("cmd").print("reAddCommand({s}) => {d}", .{ self.vtbl.name, self.vtbl.id });
|
||||
reAddCommand(&self.vtbl) catch |e| return log.err("cmd", "reAddCommand", e);
|
||||
// log.print("cmd", "reAddCommand({s}) => {d}", .{ self.vtbl.name, self.vtbl.id });
|
||||
} else {
|
||||
self.vtbl.id = try addCommand(&self.vtbl);
|
||||
command_names.put(self.vtbl.name, self.vtbl.id) catch |e| return log.logger("cmd").err("addCommand", e);
|
||||
// log.logger("cmd").print("addCommand({s}) => {d}", .{ self.vtbl.name, self.vtbl.id });
|
||||
command_names.put(self.vtbl.name, self.vtbl.id) catch |e| return log.err("cmd", "addCommand", e);
|
||||
// log.print("cmd", "addCommand({s}) => {d}", .{ self.vtbl.name, self.vtbl.id });
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ pub fn execute(id: ID, ctx: Context) tp.result {
|
|||
const cmd = commands.items[id];
|
||||
if (cmd) |p| {
|
||||
// var buf: [tp.max_message_size]u8 = undefined;
|
||||
// log.logger("cmd").print("execute({s}) {s}", .{ p.name, ctx.args.to_json(&buf) catch "" }) catch |e| return tp.exit_error(e);
|
||||
// log.print("cmd", "execute({s}) {s}", .{ p.name, ctx.args.to_json(&buf) catch "" }) catch |e| return tp.exit_error(e);
|
||||
return p.run(p, ctx);
|
||||
} else {
|
||||
return tp.exit_fmt("CommandNotAvailable: {d}", .{id});
|
||||
|
|
|
@ -297,6 +297,7 @@ pub const Editor = struct {
|
|||
self.cursels.deinit();
|
||||
self.matches.deinit();
|
||||
self.handlers.deinit();
|
||||
self.logger.deinit();
|
||||
if (self.buffer) |p| p.deinit();
|
||||
}
|
||||
|
||||
|
|
|
@ -250,7 +250,7 @@ fn diff_update(self: *Self) !void {
|
|||
}
|
||||
|
||||
fn diff_result(from: tp.pid_ref, edits: []diff.Edit) void {
|
||||
diff_result_send(from, edits) catch |e| @import("log").logger(@typeName(Self)).err("diff", e);
|
||||
diff_result_send(from, edits) catch |e| @import("log").err(@typeName(Self), "diff", e);
|
||||
}
|
||||
|
||||
fn diff_result_send(from: tp.pid_ref, edits: []diff.Edit) !void {
|
||||
|
|
|
@ -58,6 +58,7 @@ pub fn deinit(self: *Self) void {
|
|||
tui.current().message_filters.remove_ptr(self);
|
||||
if (tui.current().mainview.dynamic_cast(mainview)) |mv|
|
||||
mv.floating_views.remove(self.menu.menu_widget);
|
||||
self.logger.deinit();
|
||||
self.a.destroy(self);
|
||||
}
|
||||
|
||||
|
|
|
@ -192,6 +192,7 @@ fn deinit(self: *Self) void {
|
|||
if (self.sigwinch_signal) |sig| sig.deinit();
|
||||
self.frame_clock.deinit();
|
||||
self.nc.stop();
|
||||
self.logger.deinit();
|
||||
self.a.destroy(self);
|
||||
}
|
||||
|
||||
|
@ -718,6 +719,7 @@ const cmds = struct {
|
|||
|
||||
pub fn log_widgets(self: *Self, _: Ctx) tp.result {
|
||||
const l = log.logger("z stack");
|
||||
defer l.deinit();
|
||||
var buf: [256]u8 = undefined;
|
||||
var buf_parent: [256]u8 = undefined;
|
||||
var z: i32 = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue