Index: mojo/public/cpp/bindings/lib/message_buffer.cc |
diff --git a/mojo/public/cpp/bindings/lib/message_buffer.cc b/mojo/public/cpp/bindings/lib/message_buffer.cc |
index af79cfd251354ba919f1734acf7edfea22ecadef..cc12ef6e31c9145f97768371834f4e2a494065dd 100644 |
--- a/mojo/public/cpp/bindings/lib/message_buffer.cc |
+++ b/mojo/public/cpp/bindings/lib/message_buffer.cc |
@@ -13,54 +13,35 @@ namespace internal { |
MessageBuffer::MessageBuffer(size_t capacity, bool zero_initialized) { |
DCHECK_LE(capacity, std::numeric_limits<uint32_t>::max()); |
- data_num_bytes_ = static_cast<uint32_t>(capacity); |
MojoResult rv = AllocMessage(capacity, nullptr, 0, |
MOJO_ALLOC_MESSAGE_FLAG_NONE, &message_); |
CHECK_EQ(rv, MOJO_RESULT_OK); |
- if (capacity == 0) { |
- buffer_ = nullptr; |
- } else { |
- rv = GetMessageBuffer(message_.get(), &buffer_); |
+ void* buffer = nullptr; |
+ if (capacity != 0) { |
+ rv = GetMessageBuffer(message_.get(), &buffer); |
CHECK_EQ(rv, MOJO_RESULT_OK); |
if (zero_initialized) |
- memset(buffer_, 0, capacity); |
+ memset(buffer, 0, capacity); |
} |
+ Initialize(buffer, capacity); |
} |
MessageBuffer::MessageBuffer(ScopedMessageHandle message, uint32_t num_bytes) { |
message_ = std::move(message); |
- data_num_bytes_ = num_bytes; |
- if (num_bytes == 0) { |
- buffer_ = nullptr; |
- } else { |
- MojoResult rv = GetMessageBuffer(message_.get(), &buffer_); |
+ void* buffer = nullptr; |
+ if (num_bytes != 0) { |
+ MojoResult rv = GetMessageBuffer(message_.get(), &buffer); |
CHECK_EQ(rv, MOJO_RESULT_OK); |
} |
+ Initialize(buffer, num_bytes); |
} |
MessageBuffer::~MessageBuffer() {} |
-void* MessageBuffer::Allocate(size_t delta) { |
- delta = internal::Align(delta); |
- |
- DCHECK_LE(delta, static_cast<size_t>(data_num_bytes_)); |
- DCHECK_GT(bytes_claimed_ + static_cast<uint32_t>(delta), bytes_claimed_); |
- |
- uint32_t new_bytes_claimed = bytes_claimed_ + static_cast<uint32_t>(delta); |
- if (new_bytes_claimed > data_num_bytes_) { |
- NOTREACHED(); |
- return nullptr; |
- } |
- |
- char* start = static_cast<char*>(buffer_) + bytes_claimed_; |
- bytes_claimed_ = new_bytes_claimed; |
- return static_cast<void*>(start); |
-} |
- |
void MessageBuffer::NotifyBadMessage(const std::string& error) { |
DCHECK(message_.is_valid()); |
MojoResult result = mojo::NotifyBadMessage(message_.get(), error); |