authorgravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-01-24 17:12:48+11:00
committergravatar for 4678790+dweiller@users.noreply.github.comDominic <4678790+dweiller@users.noreply.github.com> 2023-02-20 09:09:06+11:00
logd40b135e958b0f2195bd9bcf2a44cb9952ba51fc
tree51ae4dd172b356c3b0ba46875dede30421a0c60e
parent774e2f5a5c918cccfc455bcb73d90be43ec9a9eb

std.compress.zstandard: properly track consumed count in decodeFrameBlocks


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

lib/std/compress/zstandard/decompress.zig+1-3
......@@ -601,7 +601,6 @@ pub fn decodeZStandardFrameAlloc(allocator: std.mem.Allocator, src: []const u8,
601601 .literal_stream_index = undefined,
602602 .huffman_tree = null,
603603 };
604 var written_count: usize = 0;
605604 while (true) : ({
606605 block_header = decodeBlockHeader(src[consumed_count..][0..3]);
607606 consumed_count += 3;
......@@ -623,7 +622,6 @@ pub fn decodeZStandardFrameAlloc(allocator: std.mem.Allocator, src: []const u8,
623622 hash_state.update(written_slice.first);
624623 hash_state.update(written_slice.second);
625624 }
626 written_count += written_size;
627625 if (block_header.last_block) break;
628626 }
629627 return result.toOwnedSlice();
......@@ -637,6 +635,7 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha
637635
638636 var block_header = decodeBlockHeader(src[0..3]);
639637 var bytes_read: usize = 3;
638 defer consumed_count.* += bytes_read;
640639 var decode_state = DecodeState{
641640 .repeat_offsets = .{
642641 types.compressed_block.start_repeated_offset_1,
......@@ -676,7 +675,6 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha
676675 written_count += written_size;
677676 if (block_header.last_block) break;
678677 }
679 consumed_count.* += bytes_read;
680678 return written_count;
681679}
682680