Index: mojo/edk/system/raw_channel.cc |
diff --git a/mojo/edk/system/raw_channel.cc b/mojo/edk/system/raw_channel.cc |
index 433116680d0d3672f315473f779eaa8bf78cade1..aa9c95f98f33b9168c19c0a53554acb9c2d6dedf 100644 |
--- a/mojo/edk/system/raw_channel.cc |
+++ b/mojo/edk/system/raw_channel.cc |
@@ -76,19 +76,25 @@ void RawChannel::WriteBuffer::GetPlatformHandlesToSend( |
void** serialization_data) { |
DCHECK(HavePlatformHandlesToSend()); |
- TransportData* transport_data = message_queue_.front()->transport_data(); |
+ MessageInTransit* message = message_queue_.front(); |
+ TransportData* transport_data = message->transport_data(); |
embedder::PlatformHandleVector* all_platform_handles = |
transport_data->platform_handles(); |
*num_platform_handles = |
all_platform_handles->size() - platform_handles_offset_; |
*platform_handles = &(*all_platform_handles)[platform_handles_offset_]; |
- size_t serialization_data_offset = |
- transport_data->platform_handle_table_offset(); |
- DCHECK_GT(serialization_data_offset, 0u); |
- serialization_data_offset += |
- platform_handles_offset_ * serialized_platform_handle_size_; |
- *serialization_data = |
- static_cast<char*>(transport_data->buffer()) + serialization_data_offset; |
+ |
+ if (serialized_platform_handle_size_ > 0) { |
+ size_t serialization_data_offset = |
+ transport_data->platform_handle_table_offset(); |
+ DCHECK_GT(serialization_data_offset, 0u); |
+ serialization_data_offset += |
+ platform_handles_offset_ * serialized_platform_handle_size_; |
+ *serialization_data = static_cast<char*>(transport_data->buffer()) + |
+ serialization_data_offset; |
+ } else { |
+ *serialization_data = nullptr; |
+ } |
} |
void RawChannel::WriteBuffer::GetBuffers(std::vector<Buffer>* buffers) const { |