diff --git a/src/mmap.cpp b/src/mmap.cpp index 6dc5b6ac64..4b17ab4624 100644 --- a/src/mmap.cpp +++ b/src/mmap.cpp @@ -228,12 +228,12 @@ file_mapping::file_mapping(file_handle file, open_mode_t const mode : m_size(memory_map_size(mode, file_size, file)) , m_file(std::move(file), mode, m_size) , m_open_unmap_lock(std::move(open_unmap_lock)) - , m_mapping((mode & open_mode::no_mmap) ? nullptr + , m_mapping((mode & open_mode::no_mmap) || m_size == 0 ? nullptr : MapViewOfFile(m_file.handle(), map_access(mode), 0, 0, static_cast(m_size))) { // you can't create an mmap of size 0, so we just set it to null. We // still need to create the empty file. - if (!(mode & open_mode::no_mmap) && m_mapping == nullptr) + if (!(mode & open_mode::no_mmap) && m_size > 0 && m_mapping == nullptr) throw_ex(error_code(GetLastError(), system_category()), operation_t::file_mmap); }