Commit 8752d80c84

Andrew Kelley <andrew@ziglang.org>
2025-07-25 22:55:02
std.compress.zstd.Decompress: fix bytes_written tracking
1 parent da51e94
Changed files (1)
lib
std
compress
lib/std/compress/zstd/Decompress.zig
@@ -224,11 +224,6 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
             }
 
             if (bytes_written > frame_block_size_max) return error.BlockOversize;
-
-            state.decompressed_size += bytes_written;
-            if (state.frame.content_size) |size| {
-                if (state.decompressed_size > size) return error.MalformedFrame;
-            }
         },
         .reserved => return error.ReservedBlock,
     }
@@ -240,6 +235,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
         }
     }
 
+    state.decompressed_size += bytes_written;
+
     if (block_header.last) {
         if (state.frame.has_checksum) {
             const expected_checksum = try in.takeInt(u32, .little);
@@ -254,6 +251,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
             }
         }
         d.state = .new_frame;
+    } else if (state.frame.content_size) |content_size| {
+        if (state.decompressed_size > content_size) return error.MalformedFrame;
     }
 
     return bytes_written;