authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-20 21:08:40-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 09:41:44-07:00
log91640f5f819de5bb6211d6bfa3c778737fa822aa
tree189b1181762d8aa32d0ba6ee42175295e9624ad4
parent6ae1bcd8bdf284b28bc708ab6bdafd4e0a5f7ac5

give the Reader API adapter a buffer

it needs one or else it always asserts

2 files changed, 8 insertions(+), 5 deletions(-)

lib/std/Io.zig+2-2
......@@ -314,11 +314,11 @@ pub fn GenericReader(
314314 }
315315
316316 /// Helper for bridging to the new `Reader` API while upgrading.
317 pub fn adaptToNewApi(self: *const Self) Adapter {
317 pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter {
318318 return .{
319319 .derp_reader = self.*,
320320 .new_interface = .{
321 .buffer = &.{},
321 .buffer = buffer,
322322 .vtable = &.{ .stream = Adapter.stream },
323323 .seek = 0,
324324 .end = 0,
src/Package/Fetch.zig+6-3
......@@ -1205,7 +1205,8 @@ fn unpackResource(
12051205 const reader = resource.reader();
12061206 var br = std.io.bufferedReaderSize(std.crypto.tls.max_ciphertext_record_len, reader);
12071207 var dcp = std.compress.gzip.decompressor(br.reader());
1208 var adapter = dcp.reader().adaptToNewApi();
1208 var adapter_buffer: [1024]u8 = undefined;
1209 var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
12091210 return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
12101211 },
12111212 .@"tar.xz" => {
......@@ -1219,7 +1220,8 @@ fn unpackResource(
12191220 ));
12201221 };
12211222 defer dcp.deinit();
1222 var adapter = dcp.reader().adaptToNewApi();
1223 var adapter_buffer: [1024]u8 = undefined;
1224 var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
12231225 return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
12241226 },
12251227 .@"tar.zst" => {
......@@ -1230,7 +1232,8 @@ fn unpackResource(
12301232 var dcp = std.compress.zstd.decompressor(br.reader(), .{
12311233 .window_buffer = window_buffer,
12321234 });
1233 var adapter = dcp.reader().adaptToNewApi();
1235 var adapter_buffer: [1024]u8 = undefined;
1236 var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
12341237 return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
12351238 },
12361239 .git_pack => return unpackGitPack(f, tmp_directory.handle, &resource.git) catch |err| switch (err) {