| 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 63c0a5e6c15b725eb4cbc107a71d0365128a6769..a29a7abd76152ee45f35f6f91d02a1ce2f33c159 100644
|
| --- a/mojo/edk/embedder/platform_shared_buffer.cc
|
| +++ b/mojo/edk/embedder/platform_shared_buffer.cc
|
| @@ -27,7 +27,14 @@
|
| #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 {
|
| + DCHECK(memory_handle.GetType() == base::SharedMemoryHandle::POSIX);
|
| + return ScopedPlatformHandle(PlatformHandle(
|
| + memory_handle.GetFileDescriptor().fd));
|
| + }
|
| #endif
|
| }
|
|
|
| @@ -189,6 +196,9 @@
|
| 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);
|
| @@ -203,8 +213,12 @@
|
| 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
|
|
|