From a4f9f5f265c71f207afc7324cc1d151114e1faa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kat=20March=C3=A1n?= Date: Fri, 25 Feb 2022 08:32:38 -0800 Subject: [PATCH] fix(mmap): mmap needs equal buffer lengths Fixes: https://github.com/zkat/cacache-rs/issues/32 --- src/content/write.rs | 3 ++- src/index.rs | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/write.rs b/src/content/write.rs index 4365353..677bb2b 100644 --- a/src/content/write.rs +++ b/src/content/write.rs @@ -34,9 +34,10 @@ impl Writer { .recursive(true) .create(&tmp_path) .to_internal()?; - let tmpfile = NamedTempFile::new_in(tmp_path).to_internal()?; + let mut tmpfile = NamedTempFile::new_in(tmp_path).to_internal()?; let mmap = if let Some(size) = size { if size <= MAX_MMAP_SIZE { + tmpfile.as_file_mut().set_len(size as u64).to_internal()?; unsafe { MmapMut::map_mut(tmpfile.as_file()).ok() } } else { None diff --git a/src/index.rs b/src/index.rs index 60ec36d..18c67ae 100644 --- a/src/index.rs +++ b/src/index.rs @@ -312,15 +312,14 @@ fn bucket_entries(bucket: &Path) -> InternalResult> { async fn bucket_entries_async(bucket: &Path) -> InternalResult> { let file_result = afs::File::open(bucket).await; - let file; - if let Err(err) = file_result { + let file = if let Err(err) = file_result { if err.kind() == ErrorKind::NotFound { return Ok(Vec::new()); } return Err(err).to_internal()?; } else { - file = file_result.unwrap(); - } + file_result.unwrap() + }; let mut vec = Vec::new(); let mut lines = BufReader::new(file).lines(); while let Some(line) = lines.next().await {