From c6bb9380e0e8a1cc8d14979eb0ae07ed538dd062 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 10 Nov 2017 00:17:31 +0000 Subject: [PATCH] [support] allocate exact size required for mapping in Support/Windws/Path.inc Summary: zturner suggested that mapped_file_region::init() on Windows seems to create mappings that are larger than they need to be: Offset+Size instead of Size. Indeed, that appears to be the case. I confirmed that tests pass with mappings of just Size bytes, and fail with Size-1 bytes, suggesting that Size is indeed the correct value. Reviewers: amccarth, zturner Reviewed By: zturner Subscribers: hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D39876 llvm-svn: 317850 --- llvm/lib/Support/Windows/Path.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Support/Windows/Path.inc b/llvm/lib/Support/Windows/Path.inc index fede602..f65ed5c 100644 --- a/llvm/lib/Support/Windows/Path.inc +++ b/llvm/lib/Support/Windows/Path.inc @@ -734,8 +734,8 @@ std::error_code mapped_file_region::init(int FD, uint64_t Offset, HANDLE FileMappingHandle = ::CreateFileMappingW(FileHandle, 0, flprotect, - (Offset + Size) >> 32, - (Offset + Size) & 0xffffffff, + Size >> 32, + Size & 0xffffffff, 0); if (FileMappingHandle == NULL) { std::error_code ec = mapWindowsError(GetLastError()); -- 2.7.4