Fixing of AutoBuffer::allocate(nsz) method

AutoBuffer::allocate(nsz) didn't work properly when
(sz < nsz < fixed_size). In this case sz remained unchanged.
This commit is contained in:
Vitaliy Lyudvichenko 2016-06-29 19:50:51 +03:00
parent 69bd6dad1f
commit 930d96f684
2 changed files with 15 additions and 1 deletions

View File

@ -817,10 +817,10 @@ AutoBuffer<_Tp, fixed_size>::allocate(size_t _size)
return;
}
deallocate();
sz = _size;
if(_size > fixed_size)
{
ptr = new _Tp[_size];
sz = _size;
}
}

View File

@ -27,6 +27,7 @@ TEST(CommandLineParser, testFailure)
parser.get<bool>("h");
EXPECT_FALSE(parser.check());
}
TEST(CommandLineParser, testHas_noValues)
{
const char* argv[] = {"<bin>", "-h", "--info"};
@ -218,4 +219,17 @@ TEST(CommandLineParser, positional_regression_5074_equal_sign)
EXPECT_TRUE(parser.check());
}
TEST(AutoBuffer, allocate_test)
{
AutoBuffer<int, 5> abuf(2);
EXPECT_EQ(2, abuf.size());
abuf.allocate(4);
EXPECT_EQ(4, abuf.size());
abuf.allocate(6);
EXPECT_EQ(6, abuf.size());
}
} // namespace