| Index: net/quic/core/quic_stream_sequencer_buffer.cc
|
| diff --git a/net/quic/core/quic_stream_sequencer_buffer.cc b/net/quic/core/quic_stream_sequencer_buffer.cc
|
| index e6bd9110390e11ca13743ddfccc53dc0a1eeab07..db4abf98e1677589cc232a54299b97cf010adfd6 100644
|
| --- a/net/quic/core/quic_stream_sequencer_buffer.cc
|
| +++ b/net/quic/core/quic_stream_sequencer_buffer.cc
|
| @@ -50,12 +50,17 @@ QuicStreamSequencerBuffer::QuicStreamSequencerBuffer(size_t max_capacity_bytes)
|
| blocks_count_(
|
| ceil(static_cast<double>(max_capacity_bytes) / kBlockSizeBytes)),
|
| total_bytes_read_(0),
|
| - blocks_(nullptr) {
|
| + blocks_(nullptr),
|
| + destruction_indicator_(123456) {
|
| + CHECK_GT(blocks_count_, 1u)
|
| + << "blocks_count_ = " << blocks_count_
|
| + << ", max_buffer_capacity_bytes_ = " << max_buffer_capacity_bytes_;
|
| Clear();
|
| }
|
|
|
| QuicStreamSequencerBuffer::~QuicStreamSequencerBuffer() {
|
| Clear();
|
| + destruction_indicator_ = 654321;
|
| }
|
|
|
| void QuicStreamSequencerBuffer::Clear() {
|
| @@ -92,6 +97,7 @@ QuicErrorCode QuicStreamSequencerBuffer::OnStreamData(
|
| QuicTime timestamp,
|
| size_t* const bytes_buffered,
|
| std::string* error_details) {
|
| + CHECK_EQ(destruction_indicator_, 123456) << "This object has been destructed";
|
| *bytes_buffered = 0;
|
| QuicStreamOffset offset = starting_offset;
|
| size_t size = data.size();
|
| @@ -273,9 +279,12 @@ QuicErrorCode QuicStreamSequencerBuffer::Readv(const iovec* dest_iov,
|
| size_t dest_count,
|
| size_t* bytes_read,
|
| string* error_details) {
|
| + CHECK_EQ(destruction_indicator_, 123456) << "This object has been destructed";
|
| +
|
| *bytes_read = 0;
|
| for (size_t i = 0; i < dest_count && ReadableBytes() > 0; ++i) {
|
| char* dest = reinterpret_cast<char*>(dest_iov[i].iov_base);
|
| + CHECK_NE(dest, nullptr);
|
| size_t dest_remaining = dest_iov[i].iov_len;
|
| while (dest_remaining > 0 && ReadableBytes() > 0) {
|
| size_t block_idx = NextBlockToRead();
|
| @@ -329,6 +338,8 @@ QuicErrorCode QuicStreamSequencerBuffer::Readv(const iovec* dest_iov,
|
|
|
| int QuicStreamSequencerBuffer::GetReadableRegions(struct iovec* iov,
|
| int iov_count) const {
|
| + CHECK_EQ(destruction_indicator_, 123456) << "This object has been destructed";
|
| +
|
| DCHECK(iov != nullptr);
|
| DCHECK_GT(iov_count, 0);
|
|
|
| @@ -387,6 +398,8 @@ int QuicStreamSequencerBuffer::GetReadableRegions(struct iovec* iov,
|
|
|
| bool QuicStreamSequencerBuffer::GetReadableRegion(iovec* iov,
|
| QuicTime* timestamp) const {
|
| + CHECK_EQ(destruction_indicator_, 123456) << "This object has been destructed";
|
| +
|
| if (ReadableBytes() == 0) {
|
| iov[0].iov_base = nullptr;
|
| iov[0].iov_len = 0;
|
| @@ -425,6 +438,8 @@ bool QuicStreamSequencerBuffer::GetReadableRegion(iovec* iov,
|
| }
|
|
|
| bool QuicStreamSequencerBuffer::MarkConsumed(size_t bytes_used) {
|
| + CHECK_EQ(destruction_indicator_, 123456) << "This object has been destructed";
|
| +
|
| if (bytes_used > ReadableBytes()) {
|
| return false;
|
| }
|
|
|