diff --git a/Cargo.toml b/Cargo.toml index 93461a3..665c7ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "compression" -version = "0.1.2" +version = "0.1.3" authors = ["Mitsuharu Seki "] repository = "https://github.com/chalharu/rust-compression" keywords = ["compress", "gzip", "deflate", "bzip2", "no_std"] @@ -41,4 +41,4 @@ lint = [ "clippy", "all" ] travis-ci = { repository = "chalharu/rust-compression" } [package.metadata.docs.rs] -features = ["docs"] \ No newline at end of file +features = ["docs"] diff --git a/src/bzip2/decoder.rs b/src/bzip2/decoder.rs index 00a94e3..740e502 100644 --- a/src/bzip2/decoder.rs +++ b/src/bzip2/decoder.rs @@ -575,7 +575,7 @@ where } let buffer = try!(self.get_next_lfm()); - if buffer == self.result_charactor { + if buffer == self.result_charactor && self.result_count < 4 { self.result_count += 1; self.result_wrote_count += 1; } else { diff --git a/src/bzip2/mod.rs b/src/bzip2/mod.rs index fac4dc3..3179b51 100644 --- a/src/bzip2/mod.rs +++ b/src/bzip2/mod.rs @@ -141,4 +141,31 @@ mod tests { include_bytes!("../../data/sample4.ref"), ); } + + #[test] + fn test_long() { + setup(); + let data = b"a".into_iter() + .cycle() + .take(1000) + .cloned() + .collect::>(); + + let compressed = data + .iter() + .cloned() + .encode(&mut BZip2Encoder::new(9), Action::Finish) + .collect::, _>>(); + + let decompressed = compressed.unwrap() + .iter() + .cloned() + .decode(&mut BZip2Decoder::new()) + .collect::, _>>(); + + if let Err(e) = decompressed { + debug!("{}", e); + } + assert_eq!(decompressed, Ok(data)); + } }