fixup: FSEvents watcher

This commit is contained in:
CJ van den Berg 2026-02-20 19:53:43 +01:00
parent aa5f189175
commit 6a6d9b07d2
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
2 changed files with 7 additions and 5 deletions

View file

@ -736,6 +736,7 @@ pub fn build_exe(
if (target.result.os.tag == .macos) {
exe.addFrameworkPath(b.dependency("xcode-frameworks", .{}).path("Frameworks"));
exe.addLibraryPath(b.dependency("xcode-frameworks", .{}).path("lib"));
exe.linkFramework("CoreServices");
exe.linkFramework("CoreFoundation");
}

View file

@ -352,19 +352,20 @@ const FSEventsBackend = struct {
defer ctx.parent.deinit();
// Build the CFArray of paths to watch.
var cf_strings = std.BoundedArray(?*anyopaque, 4096){};
var cf_strings: std.ArrayListUnmanaged(?*anyopaque) = .empty;
defer cf_strings.deinit(std.heap.c_allocator);
var it = self.watches.iterator();
while (it.next()) |entry| {
const path = entry.key_ptr.*;
const s = cf.CFStringCreateWithBytesNoCopy(null, path.ptr, @intCast(path.len), kCFStringEncodingUTF8, 0, &cf.kCFAllocatorNull) orelse continue;
cf_strings.append(s) catch {
const s = cf.CFStringCreateWithBytesNoCopy(null, path.ptr, @intCast(path.len), kCFStringEncodingUTF8, 0, cf.kCFAllocatorNull) orelse continue;
cf_strings.append(std.heap.c_allocator, s) catch {
cf.CFRelease(s);
break;
};
}
defer for (cf_strings.slice()) |s| cf.CFRelease(s.?);
defer for (cf_strings.items) |s| cf.CFRelease(s.?);
const paths_array = cf.CFArrayCreate(null, cf_strings.slice().ptr, @intCast(cf_strings.len), null) orelse return;
const paths_array = cf.CFArrayCreate(null, cf_strings.items.ptr, @intCast(cf_strings.items.len), null) orelse return;
defer cf.CFRelease(paths_array);
const stream = cf.FSEventStreamCreate(