diff --git a/src/decoder/stream.rs b/src/decoder/stream.rs index 160ea38..8912ad9 100644 --- a/src/decoder/stream.rs +++ b/src/decoder/stream.rs @@ -384,23 +384,23 @@ impl Read for PackBitsReader { } let length = buf.len().min(self.count); - match self.state { - PackBitsReaderState::Literal => { - self.reader.read(&mut buf[..length])?; - } + let actual = match self.state { + PackBitsReaderState::Literal => self.reader.read(&mut buf[..length])?, PackBitsReaderState::Repeat { value } => { for b in &mut buf[..length] { *b = value; } + + length } PackBitsReaderState::Header => unreachable!(), - } + }; - self.count -= length; + self.count -= actual; if self.count == 0 { self.state = PackBitsReaderState::Header; } - return Ok(length); + return Ok(actual); } }