From 6a6d9b07d245bf056c6a3561d408088c80e9a847 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Fri, 20 Feb 2026 19:53:43 +0100 Subject: [PATCH] fixup: FSEvents watcher --- build.zig | 1 + src/file_watcher.zig | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build.zig b/build.zig index 0ef3176..b070768 100644 --- a/build.zig +++ b/build.zig @@ -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"); } diff --git a/src/file_watcher.zig b/src/file_watcher.zig index 2af78f8..1f66d2b 100644 --- a/src/file_watcher.zig +++ b/src/file_watcher.zig @@ -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(