From 09e89cc55dba580d3729fbda5913e6aa87f7746d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 13 Sep 2019 14:37:25 +0200 Subject: [PATCH] Revert "AK: Made Strings reversible" This reverts commit 26e81ad574d463faee19f5973108f80d0e02aaf6. We forgot to consider UTF-8 here. String is UTF-8 and we need to be careful about things like this. --- AK/String.h | 10 ++-------- AK/StringImpl.cpp | 17 +---------------- AK/StringImpl.h | 4 +--- AK/Tests/TestString.cpp | 1 - 4 files changed, 4 insertions(+), 28 deletions(-) mode change 100644 => 100755 AK/String.h diff --git a/AK/String.h b/AK/String.h old mode 100644 new mode 100755 index fd0b707a429..2b299841b95 --- a/AK/String.h +++ b/AK/String.h @@ -110,13 +110,6 @@ public: return m_impl->to_uppercase(); } - String reversed() const - { - if (!m_impl) - return String(); - return m_impl->reversed(); - } - Vector split_limit(char separator, int limit) const; Vector split(char separator) const; String substring(int start, int length) const; @@ -234,6 +227,7 @@ struct Traits : public GenericTraits { struct CaseInsensitiveStringTraits : public AK::Traits { static unsigned hash(const String& s) { return s.impl() ? s.to_lowercase().impl()->hash() : 0; } static bool equals(const String& a, const String& b) { return a.to_lowercase() == b.to_lowercase(); } + }; inline bool operator<(const char* characters, const String& string) @@ -270,5 +264,5 @@ inline bool operator<=(const char* characters, const String& string) } -using AK::CaseInsensitiveStringTraits; using AK::String; +using AK::CaseInsensitiveStringTraits; diff --git a/AK/StringImpl.cpp b/AK/StringImpl.cpp index a036ef250cb..5e8c6d9090c 100644 --- a/AK/StringImpl.cpp +++ b/AK/StringImpl.cpp @@ -4,7 +4,7 @@ #include "kmalloc.h" #ifndef __serenity__ -# include +#include #endif //#define DEBUG_STRINGIMPL @@ -172,19 +172,4 @@ void StringImpl::compute_hash() const m_has_hash = true; } -NonnullRefPtr StringImpl::reversed() const -{ - if (m_length == 0) - return the_empty_stringimpl(); - - char* buffer; - const char* pos = &m_inline_buffer[m_length - 1]; - auto new_impl = create_uninitialized(m_length, buffer); - - for (int i = 0; i < m_length; i++) - buffer[i] = *pos--; - - return new_impl; -} - } diff --git a/AK/StringImpl.h b/AK/StringImpl.h index d00a8dc8572..b2b085f81db 100644 --- a/AK/StringImpl.h +++ b/AK/StringImpl.h @@ -1,7 +1,7 @@ #pragma once -#include #include +#include #include #include @@ -44,8 +44,6 @@ public: return m_hash; } - NonnullRefPtr reversed() const; - private: enum ConstructTheEmptyStringImplTag { ConstructTheEmptyStringImpl diff --git a/AK/Tests/TestString.cpp b/AK/Tests/TestString.cpp index 03fbb516413..9a427d302e9 100644 --- a/AK/Tests/TestString.cpp +++ b/AK/Tests/TestString.cpp @@ -41,7 +41,6 @@ TEST_CASE(compare) EXPECT(!("a" >= String("b"))); EXPECT("a" <= String("a")); EXPECT(!("b" <= String("a"))); - EXPECT(!strcmp(test_string.reversed().characters(), "FEDCBA")); } TEST_CASE(index_access)