| Index: mojo/edk/embedder/platform_shared_buffer.cc
|
| diff --git a/mojo/edk/embedder/platform_shared_buffer.cc b/mojo/edk/embedder/platform_shared_buffer.cc
|
| index 58af44df8f8c2763ce50a135c01b744e62fdd844..02b5b07b4c103e78cae571db7c3e0ee2774cb0be 100644
|
| --- a/mojo/edk/embedder/platform_shared_buffer.cc
|
| +++ b/mojo/edk/embedder/platform_shared_buffer.cc
|
| @@ -33,7 +33,14 @@ ScopedPlatformHandle SharedMemoryToPlatformHandle(
|
| #elif defined(OS_WIN)
|
| return ScopedPlatformHandle(PlatformHandle(memory_handle.GetHandle()));
|
| #else
|
| - return ScopedPlatformHandle(PlatformHandle(memory_handle.GetMemoryObject()));
|
| + if (memory_handle.GetType() == base::SharedMemoryHandle::MACH) {
|
| + return ScopedPlatformHandle(PlatformHandle(
|
| + memory_handle.GetMemoryObject()));
|
| + } else {
|
| + // We should never pass POSIX shared memory over IPC.
|
| + CHECK(false);
|
| + return ScopedPlatformHandle();
|
| + }
|
| #endif
|
| }
|
|
|
| @@ -226,6 +233,9 @@ bool PlatformSharedBuffer::Init() {
|
| options.size = num_bytes_;
|
| // By default, we can share as read-only.
|
| options.share_read_only = true;
|
| +#if defined(OS_MACOSX) && !defined(OS_IOS)
|
| + options.type = base::SharedMemoryHandle::MACH;
|
| +#endif
|
|
|
| shared_memory_.reset(new base::SharedMemory);
|
| return shared_memory_->Create(options);
|
| @@ -240,8 +250,12 @@ bool PlatformSharedBuffer::InitFromPlatformHandle(
|
| base::GetCurrentProcId());
|
| #elif defined(OS_MACOSX) && !defined(OS_IOS)
|
| base::SharedMemoryHandle handle;
|
| - handle = base::SharedMemoryHandle(platform_handle.release().port, num_bytes_,
|
| - base::GetCurrentProcId());
|
| + if (platform_handle.get().type == PlatformHandle::Type::MACH) {
|
| + handle = base::SharedMemoryHandle(
|
| + platform_handle.release().port, num_bytes_, base::GetCurrentProcId());
|
| + } else {
|
| + handle = base::SharedMemoryHandle(platform_handle.release().handle, false);
|
| + }
|
| #else
|
| base::SharedMemoryHandle handle(platform_handle.release().handle, false);
|
| #endif
|
|
|