Fix dynamic buffer consume() implementation.
diff --git a/asio/include/asio/buffer.hpp b/asio/include/asio/buffer.hpp
index e9ae6ba..498877a 100644
--- a/asio/include/asio/buffer.hpp
+++ b/asio/include/asio/buffer.hpp
@@ -1618,7 +1618,7 @@
void consume(std::size_t n)
{
std::size_t consume_length = (std::min)(n, size_);
- string_.erase(consume_length);
+ string_.erase(0, consume_length);
size_ -= consume_length;
}
@@ -1769,7 +1769,7 @@
void consume(std::size_t n)
{
std::size_t consume_length = (std::min)(n, size_);
- vector_.erase(consume_length);
+ vector_.erase(vector_.begin(), vector_.begin() + consume_length);
size_ -= consume_length;
}
diff --git a/asio/src/tests/unit/buffer.cpp b/asio/src/tests/unit/buffer.cpp
index c0060d0..2a999d1 100644
--- a/asio/src/tests/unit/buffer.cpp
+++ b/asio/src/tests/unit/buffer.cpp
@@ -297,6 +297,40 @@
dynamic_vector_buffer<char, std::allocator<char> >
db4 = dynamic_buffer(vector_data, 1024);
(void)db4;
+
+ // dynamic_buffer member functions.
+
+ std::size_t size37 = db1.size();
+ (void)size37;
+ std::size_t size38 = db3.size();
+ (void)size38;
+
+ std::size_t size39 = db1.max_size();
+ (void)size39;
+ std::size_t size40 = db3.max_size();
+ (void)size40;
+
+ dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type>::const_buffers_type
+ cb5 = db1.data();
+ (void)cb5;
+ dynamic_vector_buffer<char, std::allocator<char> >::const_buffers_type
+ cb6 = db3.data();
+ (void)cb6;
+
+ dynamic_string_buffer<char, std::string::traits_type,
+ std::string::allocator_type>::mutable_buffers_type mb5
+ = db1.prepare(1024);
+ (void)mb5;
+ dynamic_vector_buffer<char, std::allocator<char> >::mutable_buffers_type
+ mb6 = db3.prepare(1024);
+ (void)mb6;
+
+ db1.commit(1024);
+ db3.commit(1024);
+
+ db1.consume(1024);
+ db3.consume(1024);
}
catch (std::exception&)
{