Fix buffers_prefix iterator decrement

This commit is contained in:
Vinnie Falco
2018-06-09 10:11:42 -07:00
parent bd3079f5b4
commit 2c5ed4595a
3 changed files with 8 additions and 1 deletions

View File

@ -3,6 +3,7 @@ Version 173:
* Remove Autobahn testsuite doc note
* Fix buffers_adapter iterator value type
* Fix buffers_adapter max_size
* Fix buffers_prefix iterator decrement
--------------------------------------------------------------------------------

View File

@ -39,6 +39,7 @@ class buffers_prefix_view
BufferSequence bs_;
std::size_t size_;
std::size_t remain_;
iter_type end_;
template<class Deduced>
@ -46,6 +47,7 @@ class buffers_prefix_view
Deduced&& other, std::size_t dist)
: bs_(std::forward<Deduced>(other).bs_)
, size_(other.size_)
, remain_(other.remain_)
, end_(std::next(bs_.begin(), dist))
{
}

View File

@ -125,7 +125,7 @@ private:
const_iterator(buffers_prefix_view const& b,
std::true_type)
: b_(&b)
, remain_(0)
, remain_(b.remain_)
, it_(b_->end_)
{
}
@ -145,6 +145,7 @@ buffers_prefix_view<BufferSequence>::
setup(std::size_t size)
{
size_ = 0;
remain_ = 0;
end_ = boost::asio::buffer_sequence_begin(bs_);
auto const last = bs_.end();
while(end_ != last)
@ -154,6 +155,7 @@ setup(std::size_t size)
if(len >= size)
{
size_ += size;
remain_ = size - len;
break;
}
size -= len;
@ -192,6 +194,7 @@ operator=(buffers_prefix_view&& other) ->
other.end_);
bs_ = std::move(other.bs_);
size_ = other.size_;
remain_ = other.remain_;
end_ = std::next(
boost::asio::buffer_sequence_begin(bs_),
dist);
@ -209,6 +212,7 @@ operator=(buffers_prefix_view const& other) ->
other.end_);
bs_ = other.bs_;
size_ = other.size_;
remain_ = other.remain_;
end_ = std::next(
boost::asio::buffer_sequence_begin(bs_),
dist);