From dfe70c5b8690ce1839de93d8773f03975a052d07 Mon Sep 17 00:00:00 2001 From: Alistair Smith Date: Fri, 21 Nov 2025 17:48:59 -0800 Subject: [PATCH] try this --- .../PackageManager/security_scanner.zig | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/install/PackageManager/security_scanner.zig b/src/install/PackageManager/security_scanner.zig index aca37f9f89..7906f30608 100644 --- a/src/install/PackageManager/security_scanner.zig +++ b/src/install/PackageManager/security_scanner.zig @@ -725,13 +725,31 @@ pub const SecurityScanSubprocess = struct { const spawn_cwd = FileSystem.instance.top_level_dir; + // On Windows, we need to pre-allocate uv.Pipe for .buffer/.ipc + // The spawn code will initialize it and return it in extra_pipes + const json_pipe_windows = if (comptime Environment.isWindows) + bun.default_allocator.create(bun.windows.libuv.Pipe) catch bun.outOfMemory() + else + undefined; + + // We need to keep extra_fds array alive since it's passed by reference + const extra_fds_windows = if (comptime Environment.isWindows) + [_]bun.spawn.SpawnOptions.Stdio{ .{ .pipe = ipc_pipe_fds[1] }, .{ .buffer = json_pipe_windows } } + else + undefined; + + const extra_fds_posix = if (comptime Environment.isPosix) + [_]bun.spawn.SpawnOptions.Stdio{ .{ .pipe = ipc_pipe_fds[1] }, .ipc } + else + undefined; + const spawn_options = if (comptime Environment.isWindows) bun.spawn.SpawnOptions{ .stdout = .inherit, .stderr = .inherit, .stdin = .inherit, .cwd = spawn_cwd, - .extra_fds = &.{ .{ .pipe = ipc_pipe_fds[1] }, .{ .buffer = bun.default_allocator.create(bun.windows.libuv.Pipe) catch bun.outOfMemory() } }, + .extra_fds = &extra_fds_windows, .windows = .{ .loop = jsc.EventLoopHandle.init(&this.manager.event_loop), }, @@ -742,7 +760,7 @@ pub const SecurityScanSubprocess = struct { .stderr = .inherit, .stdin = .inherit, .cwd = spawn_cwd, - .extra_fds = &.{ .{ .pipe = ipc_pipe_fds[1] }, .ipc }, + .extra_fds = &extra_fds_posix, }; var spawned = try (try bun.spawn.spawnProcess(&spawn_options, @ptrCast(&argv), @ptrCast(std.os.environ.ptr))).unwrap();