From df195a88b55cce90ed7bc245b12f4ac7aaa989cd Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Mon, 26 Jun 2023 20:06:32 +0200 Subject: [PATCH] VirtualFree() doesn't seem to work as needed at the moment --- src/dwarfs/mmap.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/dwarfs/mmap.cpp b/src/dwarfs/mmap.cpp index 0b36d741..cdaa1153 100644 --- a/src/dwarfs/mmap.cpp +++ b/src/dwarfs/mmap.cpp @@ -73,6 +73,7 @@ std::error_code mmap::release(file_off_t offset [[maybe_unused]], size_t size [[maybe_unused]]) { std::error_code ec; +#ifndef _WIN32 auto misalign = offset % page_size_; offset -= misalign; @@ -80,11 +81,13 @@ std::error_code mmap::release(file_off_t offset [[maybe_unused]], size -= size % page_size_; auto data = const_cast(mf_.const_data() + offset); +#endif #ifdef _WIN32 - if (::VirtualFree(data, size, MEM_DECOMMIT) == 0) { - ec.assign(::GetLastError(), std::system_category()); - } + //// TODO: this doesn't currently work + // if (::VirtualFree(data, size, MEM_DECOMMIT) == 0) { + // ec.assign(::GetLastError(), std::system_category()); + // } #else if (::madvise(data, size, MADV_DONTNEED) != 0) { ec.assign(errno, std::generic_category()); @@ -97,14 +100,17 @@ std::error_code mmap::release(file_off_t offset [[maybe_unused]], std::error_code mmap::release_until(file_off_t offset [[maybe_unused]]) { std::error_code ec; +#ifndef _WIN32 offset -= offset % page_size_; auto data = const_cast(mf_.const_data()); +#endif #ifdef _WIN32 - if (::VirtualFree(data, offset, MEM_DECOMMIT) == 0) { - ec.assign(::GetLastError(), std::system_category()); - } + //// TODO: this doesn't currently work + // if (::VirtualFree(data, offset, MEM_DECOMMIT) == 0) { + // ec.assign(::GetLastError(), std::system_category()); + // } #else if (::madvise(data, offset, MADV_DONTNEED) != 0) { ec.assign(errno, std::generic_category());