authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-25 13:55:02-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-25 14:15:33-07:00
log8752d80c8444249ff6b62e40f918bf53b4bad2b8
treeba367c0925cdccfc532a7d1002fc311fba3eb629
parentda51e94d5073f3a224b520137c661eb7d02e0cfe

std.compress.zstd.Decompress: fix bytes_written tracking


1 files changed, 4 insertions(+), 5 deletions(-)

lib/std/compress/zstd/Decompress.zig+4-5
......@@ -224,11 +224,6 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
224224 }
225225
226226 if (bytes_written > frame_block_size_max) return error.BlockOversize;
227
228 state.decompressed_size += bytes_written;
229 if (state.frame.content_size) |size| {
230 if (state.decompressed_size > size) return error.MalformedFrame;
231 }
232227 },
233228 .reserved => return error.ReservedBlock,
234229 }
......@@ -240,6 +235,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
240235 }
241236 }
242237
238 state.decompressed_size += bytes_written;
239
243240 if (block_header.last) {
244241 if (state.frame.has_checksum) {
245242 const expected_checksum = try in.takeInt(u32, .little);
......@@ -254,6 +251,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
254251 }
255252 }
256253 d.state = .new_frame;
254 } else if (state.frame.content_size) |content_size| {
255 if (state.decompressed_size > content_size) return error.MalformedFrame;
257256 }
258257
259258 return bytes_written;