Commit f644f40702

Andrew Kelley <andrew@ziglang.org>
2025-07-29 03:35:51
implement tossBitsEnding
1 parent 2d8d0dd
Changed files (1)
lib
std
compress
lib/std/compress/flate/Decompress.zig
@@ -491,9 +491,21 @@ fn tossBits(d: *Decompress, n: u6) !void {
 }
 
 fn tossBitsEnding(d: *Decompress, n: u6) !void {
-    _ = d;
-    _ = n;
-    @panic("TODO");
+    const remaining_bits = d.remaining_bits;
+    const in = d.input;
+    var remaining_needed_bits = n - remaining_bits;
+    while (remaining_needed_bits >= 8) {
+        try in.discardAll(1);
+        remaining_needed_bits -= 8;
+    }
+    if (remaining_needed_bits == 0) {
+        d.next_bits = 0;
+        d.remaining_bits = 0;
+    } else {
+        const byte = try in.takeByte();
+        d.next_bits = @as(usize, byte) >> remaining_needed_bits;
+        d.remaining_bits = @intCast(8 - remaining_needed_bits);
+    }
 }
 
 fn takeBitsRuntime(d: *Decompress, n: u4) !u16 {