Index: runtime/bin/file_android.cc |
diff --git a/runtime/bin/file_android.cc b/runtime/bin/file_android.cc |
index 4ec84278ca3d80f4ce690cc13af457c05829f732..3eb50958cd11bab8af787e436cdec1fc3f1f971b 100644 |
--- a/runtime/bin/file_android.cc |
+++ b/runtime/bin/file_android.cc |
@@ -79,7 +79,7 @@ bool File::IsClosed() { |
} |
-void* File::Map(MapType type, int64_t position, int64_t length) { |
+MappedMemory* File::Map(MapType type, int64_t position, int64_t length) { |
ASSERT(handle_->fd() >= 0); |
int prot = PROT_NONE; |
switch (type) { |
@@ -96,7 +96,15 @@ void* File::Map(MapType type, int64_t position, int64_t length) { |
if (addr == MAP_FAILED) { |
return NULL; |
} |
- return addr; |
+ return new MappedMemory(addr, length); |
+} |
+ |
+ |
+void MappedMemory::Unmap() { |
+ int result = munmap(address_, size_); |
+ ASSERT(result == 0); |
+ address_ = 0; |
+ size_ = 0; |
} |