Index: mojo/edk/system/core.cc |
diff --git a/mojo/edk/system/core.cc b/mojo/edk/system/core.cc |
index 80e9815ac5f21808f7a401330ddbd90d65679a12..e37175552fb972aee56d06ddef4c2e6a82e1e38a 100644 |
--- a/mojo/edk/system/core.cc |
+++ b/mojo/edk/system/core.cc |
@@ -470,13 +470,23 @@ MojoResult Core::CreateDataPipe( |
ScopedPlatformHandle server_handle, client_handle; |
#if defined(OS_WIN) |
internal::g_broker->CreatePlatformChannelPair(&server_handle, &client_handle); |
+ scoped_refptr<PlatformSharedBuffer> server_buffer = |
+ internal::g_platform_support->CreateSharedBuffer( |
+ validated_options.capacity_num_bytes); |
#else |
PlatformChannelPair channel_pair; |
server_handle = channel_pair.PassServerHandle(); |
client_handle = channel_pair.PassClientHandle(); |
+ scoped_refptr<PlatformSharedBuffer> server_buffer = |
+ internal::g_broker->CreateSharedBuffer( |
+ validated_options.capacity_num_bytes); |
#endif |
- producer_dispatcher->Init(std::move(server_handle), nullptr, 0u); |
- consumer_dispatcher->Init(std::move(client_handle), nullptr, 0u); |
+ scoped_refptr<PlatformSharedBuffer> client_buffer = |
+ internal::g_platform_support->CreateSharedBufferFromHandle( |
+ validated_options.capacity_num_bytes, |
+ server_buffer->DuplicatePlatformHandle()); |
+ producer_dispatcher->Init(std::move(server_handle), server_buffer); |
+ consumer_dispatcher->Init(std::move(client_handle), client_buffer); |
*data_pipe_producer_handle = handle_pair.first; |
*data_pipe_consumer_handle = handle_pair.second; |