flat_buffer shrink_to_fit never throws

fixes #1831
closes #1835
This commit is contained in:
Richard Hodges committed 2020-02-04 19:41:50 +01:00
1 parent 7701bf8738
commit 8a90ec0e3b
3 files changed
+23 -7

No files matched your search

+17 -2
View File
@@ -260,17 +260,32 @@ reserve(std::size_t n)
template<class Allocator>
void
basic_flat_buffer<Allocator>::
shrink_to_fit()
shrink_to_fit() noexcept
{
auto const len = size();
if(len == capacity())
return;
char* p;
if(len > 0)
{
BOOST_ASSERT(begin_);
BOOST_ASSERT(in_);
p = alloc(len);
#ifndef BOOST_NO_EXCEPTIONS
try
{
#endif
p = alloc(len);
#ifndef BOOST_NO_EXCEPTIONS
}
catch(std::exception const&)
{
// request could not be fulfilled,
// squelch the exception
return;
}
#endif
std::memcpy(p, in_, len);
}
else