give the Reader API adapter a buffer

it needs one or else it always asserts
This commit is contained in:
Andrew Kelley 2025-07-20 21:08:40 -07:00
parent 6ae1bcd8bd
commit 91640f5f81
2 changed files with 8 additions and 5 deletions

View File

@ -314,11 +314,11 @@ pub fn GenericReader(
}
/// Helper for bridging to the new `Reader` API while upgrading.
pub fn adaptToNewApi(self: *const Self) Adapter {
pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter {
return .{
.derp_reader = self.*,
.new_interface = .{
.buffer = &.{},
.buffer = buffer,
.vtable = &.{ .stream = Adapter.stream },
.seek = 0,
.end = 0,

View File

@ -1205,7 +1205,8 @@ fn unpackResource(
const reader = resource.reader();
var br = std.io.bufferedReaderSize(std.crypto.tls.max_ciphertext_record_len, reader);
var dcp = std.compress.gzip.decompressor(br.reader());
var adapter = dcp.reader().adaptToNewApi();
var adapter_buffer: [1024]u8 = undefined;
var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
},
.@"tar.xz" => {
@ -1219,7 +1220,8 @@ fn unpackResource(
));
};
defer dcp.deinit();
var adapter = dcp.reader().adaptToNewApi();
var adapter_buffer: [1024]u8 = undefined;
var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
},
.@"tar.zst" => {
@ -1230,7 +1232,8 @@ fn unpackResource(
var dcp = std.compress.zstd.decompressor(br.reader(), .{
.window_buffer = window_buffer,
});
var adapter = dcp.reader().adaptToNewApi();
var adapter_buffer: [1024]u8 = undefined;
var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);
return try unpackTarball(f, tmp_directory.handle, &adapter.new_interface);
},
.git_pack => return unpackGitPack(f, tmp_directory.handle, &resource.git) catch |err| switch (err) {