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
This commit is contained in:
Chris Lattner 2008-04-01 03:49:38 +00:00
parent 37db5d67f9
commit 23ffec8258
3 changed files with 5 additions and 6 deletions

View File

@ -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(); }

View File

@ -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;

View File

@ -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);