diff --git a/AK/AKString.h b/AK/AKString.h index 86108dae16..742913167d 100644 --- a/AK/AKString.h +++ b/AK/AKString.h @@ -38,8 +38,8 @@ public: String(const StringView& view) { - if (view.m_string) - *this = String(*view.m_string); + if (view.m_impl) + m_impl = *view.m_impl; else m_impl = StringImpl::create(view.characters(), view.length()); } diff --git a/AK/StringView.cpp b/AK/StringView.cpp index 7e110c894a..9b98c219e9 100644 --- a/AK/StringView.cpp +++ b/AK/StringView.cpp @@ -3,8 +3,8 @@ namespace AK { -StringView::StringView(const AK::String& string) - : m_string(&string) +StringView::StringView(const String& string) + : m_impl(string.impl()) , m_characters(string.characters()) , m_length(string.length()) { diff --git a/AK/StringView.h b/AK/StringView.h index 495c2055fe..febebb8c48 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -5,6 +5,7 @@ namespace AK { class String; +class StringImpl; class StringView { public: @@ -27,7 +28,7 @@ public: ++m_length; } } - StringView(const AK::String& string); + StringView(const String& string); bool is_null() const { return !m_characters; } bool is_empty() const { return m_length == 0; } @@ -59,7 +60,7 @@ public: private: friend class String; - const AK::String* m_string { nullptr }; + const StringImpl* m_impl { nullptr }; const char* m_characters { nullptr }; int m_length { 0 }; };