authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-28 18:35:51-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-31 22:10:11-07:00
logf644f40702fa6c6d9ec1a1d396ddd896048c966e
tree43e08260cef5595474951b52f193c730a7a55390
parent2d8d0dd9b0c4bd8d51be33da540b45fef2b20ec2

implement tossBitsEnding


1 files changed, 15 insertions(+), 3 deletions(-)

lib/std/compress/flate/Decompress.zig+15-3
......@@ -491,9 +491,21 @@ fn tossBits(d: *Decompress, n: u6) !void {
491491}
492492
493493fn tossBitsEnding(d: *Decompress, n: u6) !void {
494 _ = d;
495 _ = n;
496 @panic("TODO");
494 const remaining_bits = d.remaining_bits;
495 const in = d.input;
496 var remaining_needed_bits = n - remaining_bits;
497 while (remaining_needed_bits >= 8) {
498 try in.discardAll(1);
499 remaining_needed_bits -= 8;
500 }
501 if (remaining_needed_bits == 0) {
502 d.next_bits = 0;
503 d.remaining_bits = 0;
504 } else {
505 const byte = try in.takeByte();
506 d.next_bits = @as(usize, byte) >> remaining_needed_bits;
507 d.remaining_bits = @intCast(8 - remaining_needed_bits);
508 }
497509}
498510
499511fn takeBitsRuntime(d: *Decompress, n: u4) !u16 {