authorgravatar for igor.anic@gmail.comIgor Anić <igor.anic@gmail.com> 2024-03-13 18:41:20+01:00
committergravatar for igor.anic@gmail.comIgor Anić <igor.anic@gmail.com> 2024-03-13 18:41:20+01:00
log54f882c4aa49fd79c375374985cc01843d72124c
treee219170dbdd44cd4e86c149028928589aa308553
parenta21f9b6d8b9b027e64795dcdec40494bad76675e

compress.xz: make reader loop little more readable

No need to do same error check on two places. First return all uncompressed data then on last read check error.

1 files changed, 7 insertions(+), 13 deletions(-)

lib/std/compress/xz/block.zig+7-13
......@@ -59,24 +59,18 @@ pub fn Decoder(comptime ReaderType: type) type {
5959
6060 pub fn read(self: *Self, output: []u8) Error!usize {
6161 while (true) {
62 const input = self.to_read.items[self.read_pos..];
63 if (input.len > 0) {
64 const n = @min(input.len, output.len);
65 @memcpy(output[0..n], input[0..n]);
62 const unread_len = self.to_read.items.len - self.read_pos;
63 if (unread_len > 0) {
64 const n = @min(unread_len, output.len);
65 @memcpy(output[0..n], self.to_read.items[self.read_pos..][0..n]);
6666 self.read_pos += n;
67 if (self.read_pos == self.to_read.items.len and self.err != null) {
68 if (self.err.? == DecodeError.EndOfStreamWithNoError) {
69 return n;
70 }
71 return self.err.?;
72 }
7367 return n;
7468 }
75 if (self.err != null) {
76 if (self.err.? == DecodeError.EndOfStreamWithNoError) {
69 if (self.err) |e| {
70 if (e == DecodeError.EndOfStreamWithNoError) {
7771 return 0;
7872 }
79 return self.err.?;
73 return e;
8074 }
8175 if (self.read_pos > 0) {
8276 self.to_read.shrinkRetainingCapacity(0);