From 8d47f51399319d8240719c82ca379d50df207a2f Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 14 Jan 2021 13:34:43 +0100 Subject: [PATCH] util/AllocatedString: add const_pointer constructor --- src/util/AllocatedString.hxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/util/AllocatedString.hxx b/src/util/AllocatedString.hxx index 6d02aa25e..e977712fc 100644 --- a/src/util/AllocatedString.hxx +++ b/src/util/AllocatedString.hxx @@ -65,7 +65,10 @@ public: BasicAllocatedString(std::nullptr_t n) noexcept :value(n) {} - explicit BasicAllocatedString(string_view src) noexcept + explicit BasicAllocatedString(string_view src) + :value(Duplicate(src)) {} + + explicit BasicAllocatedString(const_pointer src) :value(Duplicate(src)) {} BasicAllocatedString(BasicAllocatedString &&src) noexcept @@ -144,6 +147,12 @@ private: *std::copy_n(src.data(), src.size(), p) = SENTINEL; return p; } + + static pointer Duplicate(const_pointer src) { + return src != nullptr + ? Duplicate(std::string_view(src)) + : nullptr; + } }; class AllocatedString : public BasicAllocatedString {