authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-04-19 16:17:34-07:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-21 21:00:52+02:00
log7056ba9a5c750305726be862a51ff18e2318c138
tree9d6c12d285e2626ece4cd1778b5d537f0bc21f3c
parent92517c04c7ab0f87b60ed3b9a8c3e544674678fa
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

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
......@@ -1513,7 +1513,19 @@ fn unzip(
15131513 .read = true,
15141514 }) catch |err| switch (err) {
15151515 error.PathAlreadyExists => continue,
1516 error.Canceled => return error.Canceled,
1516 error.FileNotFound => {
1517 cache_root.handle.createDir(io, prefix, .default_dir) catch |dir_err| switch (dir_err) {
1518 error.Canceled => |e| return e,
1519 // error.PathAlreadyExists is considered a failure here because
1520 // it implies that the prefix is not a directory.
1521 else => |e| return f.fail(
1522 f.location_tok,
1523 try eb.printString("failed to create temporary directory: {t}", .{e}),
1524 ),
1525 };
1526 continue;
1527 },
1528 error.Canceled => |e| return e,
15171529 else => |e| return f.fail(
15181530 f.location_tok,
15191531 try eb.printString("failed to create temporary zip file: {t}", .{e}),
......@@ -1526,7 +1538,7 @@ fn unzip(
15261538 var zip_file_writer = zip_file.writer(io, &zip_file_buffer);
15271539
15281540 _ = reader.streamRemaining(&zip_file_writer.interface) catch |err| switch (err) {
1529 error.ReadFailed => return error.ReadFailed,
1541 error.ReadFailed => |e| return e,
15301542 error.WriteFailed => return f.fail(
15311543 f.location_tok,
15321544 try eb.printString("failed writing temporary zip file: {t}", .{err}),