forked from qt-creator/qt-creator
Utils: Reserve in smallstring was flaky
We have to copy the content of SmallString before we instantiate a new constructor in the same memory. So the content to which data() is pointing can be already invalid. Change-Id: I3a0ab4f9ac0c1219c2bd75fc4412eaf56209ca64 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -546,6 +546,15 @@ TEST(SmallString, AppendShortSmallString)
|
||||
ASSERT_THAT(text, SmallString("some text"));
|
||||
}
|
||||
|
||||
TEST(SmallString, AppendLongSmallStringToShortSmallString)
|
||||
{
|
||||
SmallString text("some ");
|
||||
|
||||
text.append(SmallString("very very very very very long string"));
|
||||
|
||||
ASSERT_THAT(text, SmallString("some very very very very very long string"));
|
||||
}
|
||||
|
||||
TEST(SmallString, AppendLongSmallString)
|
||||
{
|
||||
SmallString longText("some very very very very very very very very very very very long string");
|
||||
@@ -833,6 +842,24 @@ TEST(SmallString, ReserveMuchBiggerThanReference)
|
||||
ASSERT_THAT(text.capacity(), 100);
|
||||
}
|
||||
|
||||
TEST(SmallString, TextIsCopiedAfterReserveFromShortToLongString)
|
||||
{
|
||||
SmallString text("text");
|
||||
|
||||
text.reserve(100);
|
||||
|
||||
ASSERT_THAT(text, "text");
|
||||
}
|
||||
|
||||
TEST(SmallString, TextIsCopiedAfterReserveReferenceToLongString)
|
||||
{
|
||||
SmallString text("some very very very very very very very very very very very long string");
|
||||
|
||||
text.reserve(100);
|
||||
|
||||
ASSERT_THAT(text, "some very very very very very very very very very very very long string");
|
||||
}
|
||||
|
||||
TEST(SmallString, ReserveSmallerThanShortSmallString)
|
||||
{
|
||||
SmallString text = SmallString::fromUtf8("text");
|
||||
|
||||
Reference in New Issue
Block a user