AK: StringBuilder with 0 initial capacity shouldn't build null String

With 0 initial capacity, we don't allocate an underlying ByteBuffer
for the StringBuilder, which would then lead to a null String() being
returned from to_string().

This patch makes sure we always build a valid String.
This commit is contained in:
Andreas Kling 2020-05-15 13:36:50 +02:00
parent 85f2987848
commit d8aa2a6997
Notes: sideshowbarker 2024-07-19 06:38:09 +09:00
2 changed files with 11 additions and 0 deletions

View file

@ -91,6 +91,8 @@ ByteBuffer StringBuilder::to_byte_buffer() const
String StringBuilder::to_string() const
{
if (is_empty())
return String::empty();
return String((const char*)m_buffer.data(), m_length);
}

View file

@ -199,4 +199,13 @@ TEST_CASE(split)
EXPECT_EQ(parts[2].characters()[3], '\0');
}
TEST_CASE(builder_zero_initial_capacity)
{
StringBuilder builder(0);
builder.append("");
auto built = builder.build();
EXPECT_EQ(built.is_null(), false);
EXPECT_EQ(built.length(), 0u);
}
TEST_MAIN(String)