Fixes to PackBitsReader
This commit is contained in:
1 parent
b286457337
commit
4f46bacfda
2 files changed
+5
-8
No files matched your search
+1
-4
@@ -1141,10 +1141,7 @@ impl<R: Read + Seek> Decoder<R> {
|
|||||||
CompressionMethod::LZW => {
|
CompressionMethod::LZW => {
|
||||||
Box::new(LZWReader::new(reader, usize::try_from(compressed_length)?))
|
Box::new(LZWReader::new(reader, usize::try_from(compressed_length)?))
|
||||||
}
|
}
|
||||||
CompressionMethod::PackBits => Box::new(PackBitsReader::new(
|
CompressionMethod::PackBits => Box::new(PackBitsReader::new(reader, compressed_length)),
|
||||||
reader,
|
|
||||||
usize::try_from(compressed_length)?,
|
|
||||||
)),
|
|
||||||
CompressionMethod::Deflate | CompressionMethod::OldDeflate => {
|
CompressionMethod::Deflate | CompressionMethod::OldDeflate => {
|
||||||
Box::new(DeflateReader::new(reader))
|
Box::new(DeflateReader::new(reader))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -270,9 +270,9 @@ pub struct PackBitsReader<R: Read> {
|
|||||||
|
|
||||||
impl<R: Read> PackBitsReader<R> {
|
impl<R: Read> PackBitsReader<R> {
|
||||||
/// Wraps a reader
|
/// Wraps a reader
|
||||||
pub fn new(reader: R, length: usize) -> Self {
|
pub fn new(reader: R, length: u64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
reader: reader.take(length as u64),
|
reader: reader.take(length),
|
||||||
state: PackBitsReaderState::Header,
|
state: PackBitsReaderState::Header,
|
||||||
count: 0,
|
count: 0,
|
||||||
}
|
}
|
||||||
@@ -315,7 +315,7 @@ impl<R: Read> Read for PackBitsReader<R> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.count -= length;
|
self.count -= length;
|
||||||
if self.count <= buf.len() {
|
if self.count == 0 {
|
||||||
self.state = PackBitsReaderState::Header;
|
self.state = PackBitsReaderState::Header;
|
||||||
}
|
}
|
||||||
return Ok(length);
|
return Ok(length);
|
||||||
@@ -391,7 +391,7 @@ mod test {
|
|||||||
let encoded_len = encoded.len();
|
let encoded_len = encoded.len();
|
||||||
|
|
||||||
let buff = io::Cursor::new(encoded);
|
let buff = io::Cursor::new(encoded);
|
||||||
let mut decoder = PackBitsReader::new(buff, encoded_len);
|
let mut decoder = PackBitsReader::new(buff, encoded_len as u64);
|
||||||
|
|
||||||
let mut decoded = Vec::new();
|
let mut decoded = Vec::new();
|
||||||
decoder.read_to_end(&mut decoded).unwrap();
|
decoder.read_to_end(&mut decoded).unwrap();
|
||||||
|
|||||||
Reference in new issue
Block a user