Index: base/memory/shared_memory_posix.cc |
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc |
index 0358e63e33843be8973fd0f3d01097e038bbb818..fd26ad19ffbe1e3268d9b4165dd3591b4b0f6042 100644 |
--- a/base/memory/shared_memory_posix.cc |
+++ b/base/memory/shared_memory_posix.cc |
@@ -80,6 +80,7 @@ SharedMemory::SharedMemory(SharedMemoryHandle handle, bool read_only, |
} |
SharedMemory::~SharedMemory() { |
+ Unmap(); |
Close(); |
} |
@@ -331,8 +332,6 @@ SharedMemoryHandle SharedMemory::handle() const { |
} |
void SharedMemory::Close() { |
- Unmap(); |
- |
if (mapped_file_ > 0) { |
if (close(mapped_file_) < 0) |
PLOG(ERROR) << "close"; |
@@ -468,8 +467,10 @@ bool SharedMemory::ShareToProcessCommon(ProcessHandle process, |
new_handle->fd = new_fd; |
new_handle->auto_close = true; |
- if (close_self) |
+ if (close_self) { |
+ Unmap(); |
Close(); |
+ } |
return true; |
} |