Refactor: don't search for src_data twice

This commit is contained in:
Chris Hennick 2023-04-29 13:16:14 -07:00
parent 7d89194298
commit d5681d9ede
No known key found for this signature in database
GPG key ID: 25653935CC8B6C74

View file

@ -295,11 +295,6 @@ impl<A: Read + Write + Seek> ZipWriter<A> {
} }
impl<A: Read + Write + Seek> ZipWriter<A> { impl<A: Read + Write + Seek> ZipWriter<A> {
fn reader_by_name<'a>(&'a mut self, name: &str) -> ZipResult<io::Take<&'a mut dyn Read>> {
let data = self.data_by_name(name)?.to_owned();
find_content(&data, self.inner.get_plain())
}
/// Adds another copy of a file already in this archive. This will produce a larger but more /// Adds another copy of a file already in this archive. This will produce a larger but more
/// widely-compatible archive compared to [shallow_copy_file]. /// widely-compatible archive compared to [shallow_copy_file].
pub fn deep_copy_file(&mut self, src_name: &str, dest_name: &str) -> ZipResult<()> { pub fn deep_copy_file(&mut self, src_name: &str, dest_name: &str) -> ZipResult<()> {
@ -325,7 +320,7 @@ impl<A: Read + Write + Seek> ZipWriter<A> {
compressed_size, compressed_size,
uncompressed_size, uncompressed_size,
}; };
let mut reader = BufReader::new(ZipFileReader::Raw(self.reader_by_name(src_name)?)); let mut reader = BufReader::new(ZipFileReader::Raw(find_content(&data, self.inner.get_plain())?));
let mut copy = Vec::with_capacity(compressed_size as usize); let mut copy = Vec::with_capacity(compressed_size as usize);
reader.read_to_end(&mut copy)?; reader.read_to_end(&mut copy)?;
drop(reader); drop(reader);