diff --git a/Cargo.toml b/Cargo.toml index ae02729a50c868a51f189695ca20d26c104004cf..f0dcbe69aee3f605234adbcad56a1400926f37db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,6 @@ name = "example" path = "examples/main.rs" [dependencies] -base64 = "0.5.2" -xml-rs = "0.3.0" -flate2 = "1.0.1" +base64 = "0.5.2" +xml-rs = "0.3.0" +libflate = "0.1.18" diff --git a/src/lib.rs b/src/lib.rs index 7f1af7e25fc7f67ae22dcd0a918041067e30a705..f453d27224649358623b9c2813792c8f01bbfd19 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -extern crate flate2; +extern crate libflate; extern crate xml; extern crate base64; @@ -11,7 +11,6 @@ use std::fmt; use xml::reader::{EventReader, Error as XmlError}; use xml::reader::XmlEvent; use xml::attribute::OwnedAttribute; -use flate2::read::{ZlibDecoder, GzDecoder}; #[derive(Debug, Copy, Clone)] pub enum ParseTileError { @@ -841,7 +840,9 @@ fn parse_base64<R: Read>(parser: &mut EventReader<R>) -> Result<Vec<u8>, TiledEr } fn decode_zlib(data: Vec<u8>) -> Result<Vec<u8>, TiledError> { - let mut zd = ZlibDecoder::new(BufReader::new(&data[..])); + use libflate::zlib::{Decoder}; + let mut zd = Decoder::new(BufReader::new(&data[..])) + .map_err(|e|TiledError::DecompressingError(e))?; let mut data = Vec::new(); match zd.read_to_end(&mut data) { Ok(_v) => {}, @@ -851,9 +852,12 @@ fn decode_zlib(data: Vec<u8>) -> Result<Vec<u8>, TiledError> { } fn decode_gzip(data: Vec<u8>) -> Result<Vec<u8>, TiledError> { - let mut gzd = GzDecoder::new(BufReader::new(&data[..])); + use libflate::gzip::{Decoder}; + let mut zd = Decoder::new(BufReader::new(&data[..])) + .map_err(|e|TiledError::DecompressingError(e))?; + let mut data = Vec::new(); - gzd.read_to_end(&mut data).map_err(|e| TiledError::DecompressingError(e))?; + zd.read_to_end(&mut data).map_err(|e| TiledError::DecompressingError(e))?; Ok(data) }