Skip to content

Commit 96be6f6

Browse files
ianprime0509andrewrk
authored andcommitted
std.compress.flate.Decompress: return correct size for unbuffered decompression
Closes #24686 As a bonus, this commit also makes the `git.zig` "testing `main`" compile again.
1 parent 163e9ce commit 96be6f6

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

lib/std/compress/flate/Decompress.zig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ fn streamInner(d: *Decompress, w: *Writer, limit: std.Io.Limit) (Error || Reader
373373
d.state = .{ .stored_block = @intCast(remaining_len - n) };
374374
}
375375
w.advance(n);
376-
return n;
376+
return @intFromEnum(limit) - remaining + n;
377377
},
378378
.fixed_block => {
379379
while (remaining > 0) {
@@ -1265,6 +1265,7 @@ fn testDecompress(container: Container, compressed: []const u8, expected_plain:
12651265
defer aw.deinit();
12661266

12671267
var decompress: Decompress = .init(&in, container, &.{});
1268-
_ = try decompress.reader.streamRemaining(&aw.writer);
1268+
const decompressed_len = try decompress.reader.streamRemaining(&aw.writer);
1269+
try testing.expectEqual(expected_plain.len, decompressed_len);
12691270
try testing.expectEqualSlices(u8, expected_plain, aw.getWritten());
12701271
}

src/Package/Fetch/git.zig

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1678,7 +1678,7 @@ test "SHA-256 packfile indexing and checkout" {
16781678
/// Checks out a commit of a packfile. Intended for experimenting with and
16791679
/// benchmarking possible optimizations to the indexing and checkout behavior.
16801680
pub fn main() !void {
1681-
const allocator = std.heap.c_allocator;
1681+
const allocator = std.heap.smp_allocator;
16821682

16831683
const args = try std.process.argsAlloc(allocator);
16841684
defer std.process.argsFree(allocator, args);
@@ -1703,12 +1703,14 @@ pub fn main() !void {
17031703
std.debug.print("Starting index...\n", .{});
17041704
var index_file = try git_dir.createFile("idx", .{ .read = true });
17051705
defer index_file.close();
1706-
var index_buffered_writer = std.io.bufferedWriter(index_file.deprecatedWriter());
1707-
try indexPack(allocator, format, &pack_file_reader, index_buffered_writer.writer());
1708-
try index_buffered_writer.flush();
1706+
var index_file_buffer: [4096]u8 = undefined;
1707+
var index_file_writer = index_file.writer(&index_file_buffer);
1708+
try indexPack(allocator, format, &pack_file_reader, &index_file_writer);
17091709

17101710
std.debug.print("Starting checkout...\n", .{});
1711-
var repository = try Repository.init(allocator, format, &pack_file_reader, index_file);
1711+
var index_file_reader = index_file.reader(&index_file_buffer);
1712+
var repository: Repository = undefined;
1713+
try repository.init(allocator, format, &pack_file_reader, &index_file_reader);
17121714
defer repository.deinit();
17131715
var diagnostics: Diagnostics = .{ .allocator = allocator };
17141716
defer diagnostics.deinit();

0 commit comments

Comments
 (0)