diff --git a/include/cppcore/Common/TStringBase.h b/include/cppcore/Common/TStringBase.h index 33b5d17..d31b3c9 100644 --- a/include/cppcore/Common/TStringBase.h +++ b/include/cppcore/Common/TStringBase.h @@ -92,7 +92,7 @@ class TStringBase { private: static constexpr size_t InitSize = 512; - T mBuffer[InitSize] = {}; + T mBuffer[InitSize] = {'\0'}; T *mStringBuffer{nullptr}; size_t mSize{0}; size_t mCapacity{InitSize}; @@ -173,11 +173,12 @@ inline void TStringBase::copyFrom(TStringBase &base, const T *ptr, size_t if (base.mStringBuffer != nullptr) { delete [] base.mStringBuffer; } - base.mStringBuffer = new T[size]; - base.mCapacity = size; + base.mStringBuffer = new T[size + 1]; + base.mCapacity = size + 1; targetPtr = base.mStringBuffer; } memcpy(targetPtr, ptr, size * sizeof(T)); + targetPtr[size] = '\0'; base.mSize = size; } diff --git a/test/common/TStringBaseTest.cpp b/test/common/TStringBaseTest.cpp index c433e0e..67f7f44 100644 --- a/test/common/TStringBaseTest.cpp +++ b/test/common/TStringBaseTest.cpp @@ -44,7 +44,7 @@ TEST_F(TStringBaseTest, createTest) { TEST_F(TStringBaseTest, setResetTest) { TStringBase string_1; EXPECT_EQ(string_1.size(), 0); - EXPECT_EQ(string_1.capacity(), 256); + EXPECT_EQ(string_1.capacity(), 512); string_1.set("test", 4); EXPECT_EQ(string_1.size(), 4); EXPECT_EQ(0, strncmp(string_1.c_str(), "test", 4)); @@ -54,7 +54,7 @@ TEST_F(TStringBaseTest, setResetTest) { TEST_F(TStringBaseTest, setClearTest) { TStringBase string_1("test", 4); - EXPECT_EQ(string_1.capacity(), 256); + EXPECT_EQ(string_1.capacity(), 512); EXPECT_EQ(string_1.size(), 4); EXPECT_FALSE(string_1.isEmpty());