Skip to content

Commit aeb78bb

Browse files
authored
Fix concat_hstring for 0-length string (#675)
1 parent fba255d commit aeb78bb

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

strings/base_string_operators.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,12 @@ namespace winrt::impl
9898
{
9999
inline hstring concat_hstring(std::wstring_view const& left, std::wstring_view const& right)
100100
{
101-
hstring_builder text(static_cast<uint32_t>(left.size() + right.size()));
101+
auto size = static_cast<uint32_t>(left.size() + right.size());
102+
if (size == 0)
103+
{
104+
return{};
105+
}
106+
hstring_builder text(size);
102107
memcpy_s(text.data(), left.size() * sizeof(wchar_t), left.data(), left.size() * sizeof(wchar_t));
103108
memcpy_s(text.data() + left.size(), right.size() * sizeof(wchar_t), right.data(), right.size() * sizeof(wchar_t));
104109
return text.to_hstring();

test/old_tests/UnitTests/hstring.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,4 +570,7 @@ TEST_CASE("hstring, concat")
570570
REQUIRE(hstring() + s == L"abc");
571571
REQUIRE(s + L"" == L"abc");
572572
REQUIRE(L"" + s == L"abc");
573+
574+
REQUIRE(hstring() + hstring() == L"");
575+
REQUIRE(get_abi(hstring() + hstring()) == nullptr);
573576
}

0 commit comments

Comments
 (0)