From: Chris Lattner Date: Tue, 1 Apr 2008 03:49:38 +0000 (+0000) Subject: Make MappedFile::map return a const correct pointer, don't leak address space on... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=23ffec82584568b1d789c8697486ad062cfd6711;p=oota-llvm.git Make MappedFile::map return a const correct pointer, don't leak address space on Unix platforms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49026 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/System/MappedFile.h b/include/llvm/System/MappedFile.h index c46491ee7da..127c04f002d 100644 --- a/include/llvm/System/MappedFile.h +++ b/include/llvm/System/MappedFile.h @@ -65,15 +65,13 @@ namespace sys { return initialize(ErrMsg); } - /// unmap - Remove the mapped file from memory. If the file was mapped for - /// write access, the memory contents will be automatically synchronized - /// with the file's disk contents. + /// unmap - Remove the mapped file from memory. void unmap(); /// map - Reserve space for the file, map it into memory, and return a /// pointer to it. This returns the base memory address of the mapped file /// or 0 if an error occurred. - void *map(std::string* ErrMsg = 0); + const void *map(std::string* ErrMsg = 0); void close() { if (MapInfo) terminate(); } diff --git a/lib/System/Unix/MappedFile.inc b/lib/System/Unix/MappedFile.inc index 92dc6660439..35efaa6fcb9 100644 --- a/lib/System/Unix/MappedFile.inc +++ b/lib/System/Unix/MappedFile.inc @@ -56,6 +56,7 @@ bool MappedFile::initialize(std::string* ErrMsg) { } void MappedFile::terminate() { + unmap(); assert(MapInfo && "MappedFile not initialized"); ::close(MapInfo->FD); delete MapInfo; @@ -70,7 +71,7 @@ void MappedFile::unmap() { BasePtr = 0; // Mark this as non-mapped. } -void* MappedFile::map(std::string* ErrMsg) { +const void* MappedFile::map(std::string* ErrMsg) { assert(MapInfo && "MappedFile not initialized"); if (isMapped()) return BasePtr; diff --git a/lib/System/Win32/MappedFile.inc b/lib/System/Win32/MappedFile.inc index 830905debca..4f30f56f74c 100644 --- a/lib/System/Win32/MappedFile.inc +++ b/lib/System/Win32/MappedFile.inc @@ -75,7 +75,7 @@ void MappedFile::unmap() { } } -void* MappedFile::map(std::string* ErrMsg) { +const void* MappedFile::map(std::string* ErrMsg) { if (!isMapped()) { MapInfo->hMapping = CreateFileMapping(MapInfo->hFile, NULL, PAGE_READONLY, 0, 0, NULL);