| Index: mojo/public/cpp/bindings/lib/message.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/message.cc b/mojo/public/cpp/bindings/lib/message.cc
|
| index e5f38081176f5843c59669fcd5ba64b001cc2383..50d6d6758014d65465d55e4a6d30760377ab5d0f 100644
|
| --- a/mojo/public/cpp/bindings/lib/message.cc
|
| +++ b/mojo/public/cpp/bindings/lib/message.cc
|
| @@ -80,6 +80,7 @@ const uint8_t* Message::payload() const {
|
| if (version() < 2)
|
| return data() + header()->num_bytes;
|
|
|
| + DCHECK(!header_v2()->payload.is_null());
|
| return static_cast<const uint8_t*>(header_v2()->payload.Get());
|
| }
|
|
|
| @@ -89,17 +90,14 @@ uint32_t Message::payload_num_bytes() const {
|
| if (version() < 2) {
|
| num_bytes = data_num_bytes() - header()->num_bytes;
|
| } else {
|
| - auto payload = reinterpret_cast<uintptr_t>(header_v2()->payload.Get());
|
| - if (!payload) {
|
| - num_bytes = 0;
|
| - } else {
|
| - auto payload_end =
|
| - reinterpret_cast<uintptr_t>(header_v2()->payload_interface_ids.Get());
|
| - if (!payload_end)
|
| - payload_end = reinterpret_cast<uintptr_t>(data() + data_num_bytes());
|
| - DCHECK_GE(payload_end, payload);
|
| - num_bytes = payload_end - payload;
|
| - }
|
| + auto payload_begin =
|
| + reinterpret_cast<uintptr_t>(header_v2()->payload.Get());
|
| + auto payload_end =
|
| + reinterpret_cast<uintptr_t>(header_v2()->payload_interface_ids.Get());
|
| + if (!payload_end)
|
| + payload_end = reinterpret_cast<uintptr_t>(data() + data_num_bytes());
|
| + DCHECK_GE(payload_end, payload_begin);
|
| + num_bytes = payload_end - payload_begin;
|
| }
|
| DCHECK_LE(num_bytes, std::numeric_limits<uint32_t>::max());
|
| return static_cast<uint32_t>(num_bytes);
|
|
|