Fix incorrect end_ index in buffer.

This commit is contained in:
lzwdgc 2017-07-28 03:06:25 +03:00
parent a0aab7807d
commit 98d993fa55

View file

@ -134,16 +134,14 @@ uint32_t buffer::_write(const void *src, uint32_t size)
if (!buf_) if (!buf_)
{ {
buf_ = std::make_shared<std::vector<uint8_t>>(size); buf_ = std::make_shared<std::vector<uint8_t>>(size);
size_ = buf_->size(); end_ = size_ = buf_->size();
end_ = index_ + size_;
} }
if (index_ > end_) if (index_ > end_)
throw std::logic_error("buffer: out of range"); throw std::logic_error("buffer: out of range");
if (index_ + size > end_) if (index_ + size > end_)
{ {
buf_->resize(index_ + size); buf_->resize(index_ + size);
size_ = buf_->size(); end_ = size_ = buf_->size();
end_ = index_ + size_;
} }
memcpy((uint8_t *)buf_->data() + index_, src, size); memcpy((uint8_t *)buf_->data() + index_, src, size);
skip(size); skip(size);