mirror of
https://github.com/boostorg/container.git
synced 2026-02-24 03:52:15 +00:00
Implemented proposed resolution for LWG 3120
This commit is contained in:
@@ -63,6 +63,8 @@ monotonic_buffer_resource::monotonic_buffer_resource(memory_resource* upstream)
|
||||
, m_current_buffer(0)
|
||||
, m_current_buffer_size(0u)
|
||||
, m_next_buffer_size(initial_next_buffer_size)
|
||||
, m_initial_buffer(0)
|
||||
, m_initial_buffer_size(0u)
|
||||
{}
|
||||
|
||||
monotonic_buffer_resource::monotonic_buffer_resource(std::size_t initial_size, memory_resource* upstream) BOOST_NOEXCEPT
|
||||
@@ -70,6 +72,8 @@ monotonic_buffer_resource::monotonic_buffer_resource(std::size_t initial_size, m
|
||||
, m_current_buffer(0)
|
||||
, m_current_buffer_size(0u)
|
||||
, m_next_buffer_size(minimum_buffer_size)
|
||||
, m_initial_buffer(0)
|
||||
, m_initial_buffer_size(0u)
|
||||
{ //In case initial_size is zero
|
||||
this->increase_next_buffer_at_least_to(initial_size + !initial_size);
|
||||
}
|
||||
@@ -81,6 +85,8 @@ monotonic_buffer_resource::monotonic_buffer_resource(void* buffer, std::size_t b
|
||||
, m_next_buffer_size
|
||||
(bi::detail::previous_or_equal_pow2
|
||||
(boost::container::dtl::max_value(buffer_size, std::size_t(initial_next_buffer_size))))
|
||||
, m_initial_buffer(buffer)
|
||||
, m_initial_buffer_size(buffer_size)
|
||||
{ this->increase_next_buffer(); }
|
||||
|
||||
monotonic_buffer_resource::~monotonic_buffer_resource()
|
||||
@@ -89,8 +95,8 @@ monotonic_buffer_resource::~monotonic_buffer_resource()
|
||||
void monotonic_buffer_resource::release() BOOST_NOEXCEPT
|
||||
{
|
||||
m_memory_blocks.release();
|
||||
m_current_buffer = 0u;
|
||||
m_current_buffer_size = 0u;
|
||||
m_current_buffer = m_initial_buffer;
|
||||
m_current_buffer_size = m_initial_buffer_size;
|
||||
m_next_buffer_size = initial_next_buffer_size;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user