From 060c4811a0dbc748768b23c069d2bd39be5d271c Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sat, 5 Jan 2019 11:34:15 +0100 Subject: [PATCH] backup/chunk_store.rs: resize buffer by powers of two --- src/backup/chunk_store.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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); }