From e0db46ac979b384a8e1e16dd586aeb08e8b633de Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 6 Nov 2022 16:23:36 -0800 Subject: [PATCH] clean up some resources better on error --- src/Window.zig | 1 + src/renderer/Thread.zig | 6 +++++- src/termio/Thread.zig | 6 +++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Window.zig b/src/Window.zig index f9ac53d54..20546b5e9 100644 --- a/src/Window.zig +++ b/src/Window.zig @@ -255,6 +255,7 @@ pub fn create(alloc: Allocator, app: *App, config: *const Config) !*Window { // Create our terminal grid with the initial window size var renderer_impl = try Renderer.init(alloc, font_group); + errdefer renderer_impl.deinit(); renderer_impl.background = .{ .r = config.background.r, .g = config.background.g, diff --git a/src/renderer/Thread.zig b/src/renderer/Thread.zig index ebc06fd8d..68808de92 100644 --- a/src/renderer/Thread.zig +++ b/src/renderer/Thread.zig @@ -65,7 +65,11 @@ pub fn init( // Create our event loop. var loop = try libuv.Loop.init(alloc); - errdefer loop.deinit(alloc); + errdefer { + // Run the loop once to close any of our handles + _ = loop.run(.nowait) catch 0; + loop.deinit(alloc); + } loop.setData(allocPtr); // This async handle is used to "wake up" the renderer and force a render. diff --git a/src/termio/Thread.zig b/src/termio/Thread.zig index 2dcfe9476..af175aeab 100644 --- a/src/termio/Thread.zig +++ b/src/termio/Thread.zig @@ -49,7 +49,11 @@ pub fn init( // Create our event loop. var loop = try libuv.Loop.init(alloc); - errdefer loop.deinit(alloc); + errdefer { + // Run the loop once to close any of our handles + _ = loop.run(.nowait) catch 0; + loop.deinit(alloc); + } loop.setData(allocPtr); // This async handle is used to "wake up" the renderer and force a render.