From dbf6f15625dfa395cdea2675b2a7c24e743a1197 Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Sat, 10 Mar 2018 08:12:24 -0500 Subject: [PATCH] mmap: handle ENOMEM error This commit causes a memory map strategy to fall back to a file backed strategy if the mmap call fails with an `ENOMEM` error. Fixes #852 --- src/worker.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/worker.rs b/src/worker.rs index eee7c67..952a334 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -341,14 +341,17 @@ impl Worker { #[cfg(unix)] fn mmap(&self, file: &File) -> Result> { - use libc::{ENODEV, EOVERFLOW}; + use libc::{EOVERFLOW, ENODEV, ENOMEM}; let err = match mmap_readonly(file) { Ok(mmap) => return Ok(Some(mmap)), Err(err) => err, }; let code = err.raw_os_error(); - if code == Some(ENODEV) || code == Some(EOVERFLOW) { + if code == Some(EOVERFLOW) + || code == Some(ENODEV) + || code == Some(ENOMEM) + { return Ok(None); } Err(From::from(err))