From 2348f1ad01212f0bca3bd596b4246c091281b7f8 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 14 Mar 2026 23:47:38 +0100 Subject: [PATCH] fix(fsevents): check FSEventStreamStart return value and propagate failure --- src/backend/FSEvents.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/FSEvents.zig b/src/backend/FSEvents.zig index 5e27554..10094c7 100644 --- a/src/backend/FSEvents.zig +++ b/src/backend/FSEvents.zig @@ -177,11 +177,17 @@ pub fn arm(self: *@This(), allocator: std.mem.Allocator) error{ OutOfMemory, Arm 0.1, kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents, ) orelse return error.ArmFailed; - errdefer cf.FSEventStreamRelease(stream); const queue = cf.dispatch_queue_create("nightwatch", null); cf.FSEventStreamSetDispatchQueue(stream, queue); - _ = cf.FSEventStreamStart(stream); + // Stream and queue must be torn down together in the right order; a single + // errdefer block covering both is cleaner than two separate errdefers. + errdefer { + cf.FSEventStreamInvalidate(stream); + cf.FSEventStreamRelease(stream); + cf.dispatch_release(queue); + } + if (cf.FSEventStreamStart(stream) == 0) return error.ArmFailed; self.stream = stream; self.queue = queue;