fix(fsevents): check FSEventStreamStart return value and propagate failure
This commit is contained in:
parent
2e7838515b
commit
2348f1ad01
1 changed files with 8 additions and 2 deletions
|
|
@ -177,11 +177,17 @@ pub fn arm(self: *@This(), allocator: std.mem.Allocator) error{ OutOfMemory, Arm
|
||||||
0.1,
|
0.1,
|
||||||
kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents,
|
kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents,
|
||||||
) orelse return error.ArmFailed;
|
) orelse return error.ArmFailed;
|
||||||
errdefer cf.FSEventStreamRelease(stream);
|
|
||||||
|
|
||||||
const queue = cf.dispatch_queue_create("nightwatch", null);
|
const queue = cf.dispatch_queue_create("nightwatch", null);
|
||||||
cf.FSEventStreamSetDispatchQueue(stream, queue);
|
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.stream = stream;
|
||||||
self.queue = queue;
|
self.queue = queue;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue