diff --git a/include/Nazara/Core/String.hpp b/include/Nazara/Core/String.hpp index 4692c4930..dd1622d56 100644 --- a/include/Nazara/Core/String.hpp +++ b/include/Nazara/Core/String.hpp @@ -47,6 +47,7 @@ class NAZARA_API NzString : public NzHashable NzString& Append(char character); NzString& Append(const char* string); + NzString& Append(const char* string, unsigned int length); NzString& Append(const NzString& string); void Clear(bool keepBuffer = false); diff --git a/src/Nazara/Core/String.cpp b/src/Nazara/Core/String.cpp index e868f8e39..ce05d8e07 100644 --- a/src/Nazara/Core/String.cpp +++ b/src/Nazara/Core/String.cpp @@ -197,11 +197,12 @@ NzString& NzString::Append(char character) NzString& NzString::Append(const char* string) { - if (!string || !string[0]) - return *this; + return Append(string, std::strlen(string)); +} - unsigned int length = std::strlen(string); - if (length == 0) +NzString& NzString::Append(const char* string, unsigned int length) +{ + if (!string || !string[0] || length == 0) return *this; if (m_sharedString->capacity >= m_sharedString->size + length) @@ -227,6 +228,8 @@ NzString& NzString::Append(const char* string) m_sharedString->string = str; } + m_sharedString->string[m_sharedString->size] = '\0'; + return *this; }