From 527b87032381ed866053e5ecafc8452a4301825a Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 21 Mar 2025 21:17:58 +1100 Subject: [PATCH 1/6] Call BzDecoder::flush on finish Should call flush on finish to ensure that all data are flushed Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index f392a17e..f0855f53 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -97,8 +97,8 @@ impl Decode for BzDecoder { fn finish( &mut self, - _output: &mut PartialBuffer + AsMut<[u8]>>, + output: &mut PartialBuffer + AsMut<[u8]>>, ) -> io::Result { - Ok(true) + self.flush(output) } } From df9907ac78dde1954bcd55c1e31cf4ccbbe1b2be Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 13 Jun 2025 01:00:42 +1000 Subject: [PATCH 2/6] Fix src/codec/bzip2/decoder.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index a47c17dd..4cb0c9c2 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -99,6 +99,6 @@ impl Decode for BzDecoder { &mut self, output: &mut PartialBuffer + AsMut<[u8]>>, ) -> io::Result { - self.flush(output) + self.decode(&mut PartialBuffer::new(&[][..]), output) } } From 6790fd9ed2c807e26c321d0c088a084e2fc8c249 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 13 Jun 2025 01:04:51 +1000 Subject: [PATCH 3/6] Fix src/codec/bzip2/decoder.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index 4cb0c9c2..5ee3e757 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -99,6 +99,6 @@ impl Decode for BzDecoder { &mut self, output: &mut PartialBuffer + AsMut<[u8]>>, ) -> io::Result { - self.decode(&mut PartialBuffer::new(&[][..]), output) + Ok(self.decode(&mut PartialBuffer::new(&[][..]), output)?) } } From 6f592e1ac09101189d298a62f7506e8e403a6d57 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 13 Jun 2025 01:08:46 +1000 Subject: [PATCH 4/6] Fix src/codec/bzip2/decoder.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index 5ee3e757..909df377 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -99,6 +99,14 @@ impl Decode for BzDecoder { &mut self, output: &mut PartialBuffer + AsMut<[u8]>>, ) -> io::Result { - Ok(self.decode(&mut PartialBuffer::new(&[][..]), output)?) + match self.decode( + &mut PartialBuffer::new(&[][..]), + output, + FlushDecompress::Finish, + )? { + Status::Ok => Ok(false), + Status::StreamEnd => Ok(true), + Status::BufError => Err(io::Error::other("unexpected BufError")), + } } } From 7336170be2d9094330cd11074c5c291ce9b6c56f Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 13 Jun 2025 01:11:17 +1000 Subject: [PATCH 5/6] Fix src/codec/bzip2/decoder.rs Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index 909df377..ff6a2312 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -102,7 +102,6 @@ impl Decode for BzDecoder { match self.decode( &mut PartialBuffer::new(&[][..]), output, - FlushDecompress::Finish, )? { Status::Ok => Ok(false), Status::StreamEnd => Ok(true), From 51659d95a8de0d1b21d66b725d396435ffa48921 Mon Sep 17 00:00:00 2001 From: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> Date: Fri, 13 Jun 2025 01:19:25 +1000 Subject: [PATCH 6/6] Fix status matching Signed-off-by: Jiahao XU <30436523+NobodyXu@users.noreply.github.com> --- src/codec/bzip2/decoder.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/codec/bzip2/decoder.rs b/src/codec/bzip2/decoder.rs index ff6a2312..356d1822 100644 --- a/src/codec/bzip2/decoder.rs +++ b/src/codec/bzip2/decoder.rs @@ -103,9 +103,12 @@ impl Decode for BzDecoder { &mut PartialBuffer::new(&[][..]), output, )? { - Status::Ok => Ok(false), + Status::Ok + | Status::FlushOk + | Status::RunOk + | Status::FinishOk => Ok(false), Status::StreamEnd => Ok(true), - Status::BufError => Err(io::Error::other("unexpected BufError")), + Status::MemNeeded => Err(io::ErrorKind::OutOfMemory.into()), } } }