authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-04-19 16:17:34-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-04-21 18:07:36+02:00
logcfde9303ff75322525746aa325026f0e12fb402c
treea5b8f0c379caa40edac7e3e5d53b6b2b342c8a2a
parentb5d8966e05926c31b16cdd18ee324cf3b6381d51

Fetch: Fix zip fetching when cache directory doesn't have tmp dir

Fixes #31964

1 files changed, 14 insertions(+), 2 deletions(-)

src/Package/Fetch.zig+14-2
......@@ -1512,7 +1512,19 @@ fn unzip(
15121512 .read = true,
15131513 }) catch |err| switch (err) {
15141514 error.PathAlreadyExists => continue,
1515 error.Canceled => return error.Canceled,
1515 error.FileNotFound => {
1516 cache_root.handle.createDir(io, prefix, .default_dir) catch |dir_err| switch (dir_err) {
1517 error.Canceled => |e| return e,
1518 // error.PathAlreadyExists is considered a failure here because
1519 // it implies that the prefix is not a directory.
1520 else => |e| return f.fail(
1521 f.location_tok,
1522 try eb.printString("failed to create temporary directory: {t}", .{e}),
1523 ),
1524 };
1525 continue;
1526 },
1527 error.Canceled => |e| return e,
15161528 else => |e| return f.fail(
15171529 f.location_tok,
15181530 try eb.printString("failed to create temporary zip file: {t}", .{e}),
......@@ -1525,7 +1537,7 @@ fn unzip(
15251537 var zip_file_writer = zip_file.writer(io, &zip_file_buffer);
15261538
15271539 _ = reader.streamRemaining(&zip_file_writer.interface) catch |err| switch (err) {
1528 error.ReadFailed => return error.ReadFailed,
1540 error.ReadFailed => |e| return e,
15291541 error.WriteFailed => return f.fail(
15301542 f.location_tok,
15311543 try eb.printString("failed writing temporary zip file: {t}", .{err}),