From c1a7aa652d2a9c829683d11d05e2de9f158b8433 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 14 Jan 2021 13:43:42 +0100 Subject: [PATCH] util/AllocatedString: replace Clone() with copy constructor --- src/lib/icu/Compare.hxx | 10 +++++----- src/util/AllocatedString.hxx | 9 ++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/lib/icu/Compare.hxx b/src/lib/icu/Compare.hxx index 6f4841739..3110d16aa 100644 --- a/src/lib/icu/Compare.hxx +++ b/src/lib/icu/Compare.hxx @@ -38,11 +38,11 @@ class IcuCompare { #ifdef _WIN32 /* Windows API functions work with wchar_t strings, so let's cache the MultiByteToWideChar() result for performance */ - BasicAllocatedString needle; -#else - AllocatedString needle; + using AllocatedString = BasicAllocatedString; #endif + AllocatedString needle; + public: IcuCompare():needle(nullptr) {} @@ -50,12 +50,12 @@ public: IcuCompare(const IcuCompare &src) noexcept :needle(src - ? src.needle.Clone() + ? AllocatedString(src.needle) : nullptr) {} IcuCompare &operator=(const IcuCompare &src) noexcept { needle = src - ? src.needle.Clone() + ? AllocatedString(src.needle) : nullptr; return *this; } diff --git a/src/util/AllocatedString.hxx b/src/util/AllocatedString.hxx index e977712fc..9b2c5812a 100644 --- a/src/util/AllocatedString.hxx +++ b/src/util/AllocatedString.hxx @@ -71,6 +71,9 @@ public: explicit BasicAllocatedString(const_pointer src) :value(Duplicate(src)) {} + BasicAllocatedString(const BasicAllocatedString &src) noexcept + :BasicAllocatedString(Duplicate(src.value)) {} + BasicAllocatedString(BasicAllocatedString &&src) noexcept :value(src.Steal()) {} @@ -137,10 +140,6 @@ public: return std::exchange(value, nullptr); } - BasicAllocatedString Clone() const { - return BasicAllocatedString(Duplicate(*this)); - } - private: static pointer Duplicate(string_view src) { auto p = new value_type[src.size() + 1]; @@ -150,7 +149,7 @@ private: static pointer Duplicate(const_pointer src) { return src != nullptr - ? Duplicate(std::string_view(src)) + ? Duplicate(string_view(src)) : nullptr; } };