Chromium Code Reviews| Index: base/memory/shared_memory_handle_mac.cc |
| diff --git a/base/memory/shared_memory_handle_mac.cc b/base/memory/shared_memory_handle_mac.cc |
| index 13af82dbd952263bc36d023a736eea808717a654..c4951df1a09b288950873910d75abbfc1ff82c30 100644 |
| --- a/base/memory/shared_memory_handle_mac.cc |
| +++ b/base/memory/shared_memory_handle_mac.cc |
| @@ -44,12 +44,17 @@ SharedMemoryHandle::SharedMemoryHandle(mach_vm_size_t size) { |
| memory_object_ = named_right; |
| size_ = size; |
| pid_ = GetCurrentProcId(); |
| + ownership_passes_to_ipc_ = false; |
| } |
| SharedMemoryHandle::SharedMemoryHandle(mach_port_t memory_object, |
| mach_vm_size_t size, |
| base::ProcessId pid) |
| - : type_(MACH), memory_object_(memory_object), size_(size), pid_(pid) {} |
| + : type_(MACH), |
| + memory_object_(memory_object), |
| + size_(size), |
| + pid_(pid), |
| + ownership_passes_to_ipc_(false) {} |
| SharedMemoryHandle::SharedMemoryHandle(const SharedMemoryHandle& handle) |
| : type_(handle.type_) { |
| @@ -182,7 +187,7 @@ bool SharedMemoryHandle::MapAt(off_t offset, |
| offset, |
| FALSE, // Copy |
| VM_PROT_READ | (read_only ? 0 : VM_PROT_WRITE), // Current protection |
| - VM_PROT_READ | VM_PROT_WRITE, // Maximum protection |
| + VM_PROT_WRITE | VM_PROT_READ | VM_PROT_IS_MASK, // Maximum protection |
|
Mark Mentovai
2015/10/23 14:24:03
This bit wasn’t defined in 10.6. Does its kernel m
erikchen
2015/10/23 17:13:31
mark: 10.6.8 doesn't have VM_PROT_IS_MASK and will
|
| VM_INHERIT_NONE); |
| return kr == KERN_SUCCESS; |
| } |
| @@ -205,6 +210,16 @@ void SharedMemoryHandle::Close() const { |
| } |
| } |
| +void SharedMemoryHandle::SetOwnershipPassesToIPC(bool ownership_passes) { |
| + DCHECK_EQ(type_, MACH); |
| + ownership_passes_to_ipc_ = ownership_passes; |
| +} |
| + |
| +bool SharedMemoryHandle::OwnershipPassesToIPC() const { |
| + DCHECK_EQ(type_, MACH); |
| + return ownership_passes_to_ipc_; |
| +} |
| + |
| void SharedMemoryHandle::CopyRelevantData(const SharedMemoryHandle& handle) { |
| switch (type_) { |
| case POSIX: |
| @@ -214,6 +229,7 @@ void SharedMemoryHandle::CopyRelevantData(const SharedMemoryHandle& handle) { |
| memory_object_ = handle.memory_object_; |
| size_ = handle.size_; |
| pid_ = handle.pid_; |
| + ownership_passes_to_ipc_ = handle.ownership_passes_to_ipc_; |
| break; |
| } |
| } |