mirror of
https://github.com/martinvonz/jj.git
synced 2024-10-25 07:56:16 +00:00
local_backend: don't reference uninitialized memory
This commit is contained in:
parent
fa758893cf
commit
75636d626f
1 changed files with 5 additions and 9 deletions
|
@ -141,19 +141,15 @@ impl Backend for LocalBackend {
|
||||||
let temp_file = NamedTempFile::new_in(&self.path).map_err(to_other_err)?;
|
let temp_file = NamedTempFile::new_in(&self.path).map_err(to_other_err)?;
|
||||||
let mut encoder = zstd::Encoder::new(temp_file.as_file(), 0).map_err(to_other_err)?;
|
let mut encoder = zstd::Encoder::new(temp_file.as_file(), 0).map_err(to_other_err)?;
|
||||||
let mut hasher = Blake2b512::new();
|
let mut hasher = Blake2b512::new();
|
||||||
|
let mut buff: Vec<u8> = vec![0; 1 << 14];
|
||||||
loop {
|
loop {
|
||||||
let mut buff: Vec<u8> = Vec::with_capacity(1 << 14);
|
let bytes_read = contents.read(&mut buff).map_err(to_other_err)?;
|
||||||
let bytes_read;
|
|
||||||
unsafe {
|
|
||||||
buff.set_len(1 << 14);
|
|
||||||
bytes_read = contents.read(&mut buff).map_err(to_other_err)?;
|
|
||||||
buff.set_len(bytes_read);
|
|
||||||
}
|
|
||||||
if bytes_read == 0 {
|
if bytes_read == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
encoder.write_all(&buff).map_err(to_other_err)?;
|
let bytes = &buff[..bytes_read];
|
||||||
hasher.update(&buff);
|
encoder.write_all(bytes).map_err(to_other_err)?;
|
||||||
|
hasher.update(bytes);
|
||||||
}
|
}
|
||||||
encoder.finish().map_err(to_other_err)?;
|
encoder.finish().map_err(to_other_err)?;
|
||||||
let id = FileId::new(hasher.finalize().to_vec());
|
let id = FileId::new(hasher.finalize().to_vec());
|
||||||
|
|
Loading…
Reference in a new issue