use alloc::vec::Vec;
use super::MAX_DECOMPRESSED_EXTENT_BYTES;
use crate::error::{Error, Result};
pub(super) fn decode(src: &[u8], dst: &mut Vec<u8>) -> Result<()> {
let max = MAX_DECOMPRESSED_EXTENT_BYTES.saturating_sub(dst.len());
if max == 0 {
return Err(Error::BadCompression {
algorithm: "comp_zlib",
});
}
let decoded =
miniz_oxide::inflate::decompress_to_vec_zlib_with_limit(src, max).map_err(|_| {
Error::BadCompression {
algorithm: "comp_zlib",
}
})?;
dst.extend_from_slice(&decoded);
Ok(())
}