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,...@@ -601,7 +601,6 @@ pub fn decodeZStandardFrameAlloc(allocator: std.mem.Allocator, src: []const u8,
601 .literal_stream_index = undefined,601 .literal_stream_index = undefined,
602 .huffman_tree = null,602 .huffman_tree = null,
603 };603 };
604 var written_count: usize = 0;
605 while (true) : ({604 while (true) : ({
606 block_header = decodeBlockHeader(src[consumed_count..][0..3]);605 block_header = decodeBlockHeader(src[consumed_count..][0..3]);
607 consumed_count += 3;606 consumed_count += 3;
...@@ -623,7 +622,6 @@ pub fn decodeZStandardFrameAlloc(allocator: std.mem.Allocator, src: []const u8,...@@ -623,7 +622,6 @@ pub fn decodeZStandardFrameAlloc(allocator: std.mem.Allocator, src: []const u8,
623 hash_state.update(written_slice.first);622 hash_state.update(written_slice.first);
624 hash_state.update(written_slice.second);623 hash_state.update(written_slice.second);
625 }624 }
626 written_count += written_size;
627 if (block_header.last_block) break;625 if (block_header.last_block) break;
628 }626 }
629 return result.toOwnedSlice();627 return result.toOwnedSlice();
...@@ -637,6 +635,7 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha...@@ -637,6 +635,7 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha
637635
638 var block_header = decodeBlockHeader(src[0..3]);636 var block_header = decodeBlockHeader(src[0..3]);
639 var bytes_read: usize = 3;637 var bytes_read: usize = 3;
638 defer consumed_count.* += bytes_read;
640 var decode_state = DecodeState{639 var decode_state = DecodeState{
641 .repeat_offsets = .{640 .repeat_offsets = .{
642 types.compressed_block.start_repeated_offset_1,641 types.compressed_block.start_repeated_offset_1,
...@@ -676,7 +675,6 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha...@@ -676,7 +675,6 @@ pub fn decodeFrameBlocks(dest: []u8, src: []const u8, consumed_count: *usize, ha
676 written_count += written_size;675 written_count += written_size;
677 if (block_header.last_block) break;676 if (block_header.last_block) break;
678 }677 }
679 consumed_count.* += bytes_read;
680 return written_count;678 return written_count;
681}679}
682680