Merge pull request #193 from image-rs/issue-192-desync-packbits

Fix read in packbits decoder
This commit is contained in:
Andreas Molzer authored and GitHub committed 2022-12-03 18:49:51 +01:00
commit aa42fcb1bb
1 file changed
+7 -7
+7 -7
View File
@@ -332,23 +332,23 @@ impl<R: Read> Read for PackBitsReader<R> {
} }
let length = buf.len().min(self.count); let length = buf.len().min(self.count);
match self.state { let actual = match self.state {
PackBitsReaderState::Literal => { PackBitsReaderState::Literal => self.reader.read(&mut buf[..length])?,
self.reader.read(&mut buf[..length])?;
}
PackBitsReaderState::Repeat { value } => { PackBitsReaderState::Repeat { value } => {
for b in &mut buf[..length] { for b in &mut buf[..length] {
*b = value; *b = value;
} }
length
} }
PackBitsReaderState::Header => unreachable!(), PackBitsReaderState::Header => unreachable!(),
} };
self.count -= length; self.count -= actual;
if self.count == 0 { if self.count == 0 {
self.state = PackBitsReaderState::Header; self.state = PackBitsReaderState::Header;
} }
return Ok(length); return Ok(actual);
} }
} }