diff --git a/src/backup/chunk_store.rs b/src/backup/chunk_store.rs index 84223b6c..87a041d1 100644 --- a/src/backup/chunk_store.rs +++ b/src/backup/chunk_store.rs @@ -178,10 +178,11 @@ impl ChunkStore { let stat = nix::sys::stat::fstat(f.as_raw_fd())?; let size = stat.st_size as usize; - unsafe { buffer.set_len(buffer.capacity()); } - if buffer.len() < size { - let additional = size - buffer.len(); - buffer.reserve(additional); + if buffer.capacity() < size { + let mut newsize = buffer.capacity(); + while newsize < size { newsize = newsize << 1; } + let additional = newsize - buffer.len(); + buffer.reserve_exact(additional); } unsafe { buffer.set_len(size); }