diff options
| author | Mitchell Hashimoto <mitchell.hashimoto@gmail.com> | 2022-11-06 16:23:36 -0800 |
|---|---|---|
| committer | Mitchell Hashimoto <mitchell.hashimoto@gmail.com> | 2022-11-06 16:23:36 -0800 |
| commit | e0db46ac979b384a8e1e16dd586aeb08e8b633de (patch) | |
| tree | 7fcc4cdd677e344995dea2b47990e2a61034d2a1 /src | |
| parent | 05cd77e7cf78f179b991a14b7b975d5f2b88e86e (diff) | |
clean up some resources better on error
Diffstat (limited to 'src')
| -rw-r--r-- | src/Window.zig | 1 | ||||
| -rw-r--r-- | src/renderer/Thread.zig | 6 | ||||
| -rw-r--r-- | 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. |
