From 3d9974db95a78d3a023abf37d4c1b180430c6fb7 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 30 Aug 2018 17:37:12 +0200 Subject: [PATCH] Utils: Fix small string Change-Id: I6a746eb28c6c803b9ade9f626a950cf93ba6fe99 Reviewed-by: Ivan Donchevskii --- src/libs/utils/smallstring.h | 8 +++++++- tests/unit/unittest/smallstring-test.cpp | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index dce302594b8..58589cb0883 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -615,7 +615,13 @@ public: friend BasicSmallString operator+(SmallStringView first, const BasicSmallString &second) { - return operator+(second, first); + BasicSmallString text; + text.reserve(first.size() + second.size()); + + text.append(first); + text.append(second); + + return text; } template diff --git a/tests/unit/unittest/smallstring-test.cpp b/tests/unit/unittest/smallstring-test.cpp index ee55d875a7d..1f1e704d88d 100644 --- a/tests/unit/unittest/smallstring-test.cpp +++ b/tests/unit/unittest/smallstring-test.cpp @@ -1657,6 +1657,15 @@ TEST(SmallString, StringViewPlusOperator) ASSERT_THAT(result, "text and more text"); } +TEST(SmallString, StringViewPlusOperatorReverseOrder) +{ + SmallStringView text = " and more text"; + + auto result = "text" + text; + + ASSERT_THAT(result, "text and more text"); +} + TEST(SmallString, StringPlusOperator) { SmallString text = "text"; @@ -1666,6 +1675,15 @@ TEST(SmallString, StringPlusOperator) ASSERT_THAT(result, "text and more text"); } +TEST(SmallString, StringPlusOperatorReverseOrder) +{ + SmallString text = " and more text"; + + auto result = "text" + text; + + ASSERT_THAT(result, "text and more text"); +} + TEST(SmallString, ShortStringCapacity) { ASSERT_THAT(SmallString().shortStringCapacity(), 30);