From f7fb4f4ddce9383a9b973c54fa82ada2b32ac542 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Thu, 6 Jul 2023 10:40:36 -0700 Subject: [PATCH] [glacier] Add a method to build a bounded string --- lib/glacier/string/string.cpp | 10 ++++++---- lib/glacier/string/string.h | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) 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_; }