diff --git a/lib/glacier/string/string.cpp b/lib/glacier/string/string.cpp index c7d3a35..4e193d1 100644 --- a/lib/glacier/string/string.cpp +++ b/lib/glacier/string/string.cpp @@ -14,12 +14,14 @@ uint64_t cstrlen(const char* cstr) { } // namespace -String::String(const char* str) { - length_ = cstrlen(str); +String::String(const char* str) : String(str, cstrlen(str)) {} + +String::String(const char* cstr, uint64_t str_len) : length_(str_len) { cstr_ = new char[length_ + 1]; - for (uint64_t i = 0; i <= length_; i++) { - cstr_[i] = str[i]; + for (uint64_t i = 0; i < length_; i++) { + cstr_[i] = cstr[i]; } + cstr_[length_] = '\0'; } bool String::operator==(const String& other) { diff --git a/lib/glacier/string/string.h b/lib/glacier/string/string.h index 458ecb5..e919a7c 100644 --- a/lib/glacier/string/string.h +++ b/lib/glacier/string/string.h @@ -7,6 +7,7 @@ namespace glcr { class String { public: String(const char* cstr); + String(const char* cstr, uint64_t str_len); const char* cstr() const { return cstr_; } uint64_t length() const { return length_; }