Index: base/shared_memory_nacl.cc |
diff --git a/base/shared_memory_nacl.cc b/base/shared_memory_nacl.cc |
index fef293719ebc6b4898ac561d16f768b8d5f9366e..8d749867b49cc470b35ad7f7128cd35f593c97e6 100644 |
--- a/base/shared_memory_nacl.cc |
+++ b/base/shared_memory_nacl.cc |
@@ -137,7 +137,18 @@ void SharedMemory::Unlock() { |
bool SharedMemory::ShareToProcessCommon(ProcessHandle process, |
SharedMemoryHandle *new_handle, |
bool close_self) { |
- return false; |
+ const int new_fd = dup(mapped_file_); |
+ if (new_fd < 0) { |
+ DPLOG(ERROR) << "dup() failed."; |
+ return false; |
+ } |
+ |
+ new_handle->fd = new_fd; |
+ new_handle->auto_close = true; |
+ |
+ if (close_self) |
+ Close(); |
+ return true; |
} |
} // namespace base |