use back::write::{ModuleConfig, with_llvm_pmb};
use libc;
-use flate;
+use flate2::read::ZlibDecoder;
+use std::io::Read;
use std::ffi::CString;
use std::path::Path;
}
let export_threshold =
- symbol_export::crates_export_threshold(&sess.crate_types.borrow()[..]);
+ symbol_export::crates_export_threshold(&sess.crate_types.borrow());
let symbol_filter = &|&(ref name, level): &(String, _)| {
if symbol_export::is_below_threshold(level, export_threshold) {
link::RLIB_BYTECODE_OBJECT_V1_DATA_OFFSET..
(link::RLIB_BYTECODE_OBJECT_V1_DATA_OFFSET + data_size as usize)];
- match flate::inflate_bytes(compressed_data) {
- Ok(inflated) => inflated,
- Err(_) => {
- sess.fatal(&format!("failed to decompress bc of `{}`",
- name))
- }
+ let mut inflated = Vec::new();
+ let res = ZlibDecoder::new(compressed_data)
+ .read_to_end(&mut inflated);
+ if res.is_err() {
+ sess.fatal(&format!("failed to decompress bc of `{}`",
+ name))
}
+ inflated
} else {
sess.fatal(&format!("Unsupported bytecode format version {}",
version))
// the object must be in the old, pre-versioning format, so
// simply inflate everything and let LLVM decide if it can
// make sense of it
- match flate::inflate_bytes(bc_encoded) {
- Ok(bc) => bc,
- Err(_) => {
- sess.fatal(&format!("failed to decompress bc of `{}`",
- name))
- }
+ let mut inflated = Vec::new();
+ let res = ZlibDecoder::new(bc_encoded)
+ .read_to_end(&mut inflated);
+ if res.is_err() {
+ sess.fatal(&format!("failed to decompress bc of `{}`",
+ name))
}
+ inflated
})
};
bc_decoded.len() as libc::size_t) {
write::llvm_err(sess.diagnostic(),
format!("failed to load bc of `{}`",
- &name[..]));
+ name));
}
});
}