fix(mmap): mmap needs equal buffer lengths (#33)

Fixes: https://github.com/zkat/cacache-rs/issues/32
This commit is contained in:
Kat Marchán 2022-02-25 09:04:28 -08:00 committed by GitHub
parent d9291763ce
commit 684a3e8a68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View File

@ -34,9 +34,10 @@ impl Writer {
.recursive(true) .recursive(true)
.create(&tmp_path) .create(&tmp_path)
.to_internal()?; .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 { let mmap = if let Some(size) = size {
if size <= MAX_MMAP_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() } unsafe { MmapMut::map_mut(tmpfile.as_file()).ok() }
} else { } else {
None None

View File

@ -312,15 +312,14 @@ fn bucket_entries(bucket: &Path) -> InternalResult<Vec<SerializableMetadata>> {
async fn bucket_entries_async(bucket: &Path) -> InternalResult<Vec<SerializableMetadata>> { async fn bucket_entries_async(bucket: &Path) -> InternalResult<Vec<SerializableMetadata>> {
let file_result = afs::File::open(bucket).await; let file_result = afs::File::open(bucket).await;
let file; let file = if let Err(err) = file_result {
if let Err(err) = file_result {
if err.kind() == ErrorKind::NotFound { if err.kind() == ErrorKind::NotFound {
return Ok(Vec::new()); return Ok(Vec::new());
} }
return Err(err).to_internal()?; return Err(err).to_internal()?;
} else { } else {
file = file_result.unwrap(); file_result.unwrap()
} };
let mut vec = Vec::new(); let mut vec = Vec::new();
let mut lines = BufReader::new(file).lines(); let mut lines = BufReader::new(file).lines();
while let Some(line) = lines.next().await { while let Some(line) = lines.next().await {