summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMitchell Hashimoto <mitchell.hashimoto@gmail.com>2022-11-06 16:23:36 -0800
committerMitchell Hashimoto <mitchell.hashimoto@gmail.com>2022-11-06 16:23:36 -0800
commite0db46ac979b384a8e1e16dd586aeb08e8b633de (patch)
tree7fcc4cdd677e344995dea2b47990e2a61034d2a1 /src
parent05cd77e7cf78f179b991a14b7b975d5f2b88e86e (diff)
clean up some resources better on error
Diffstat (limited to 'src')
-rw-r--r--src/Window.zig1
-rw-r--r--src/renderer/Thread.zig6
-rw-r--r--src/termio/Thread.zig6
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.