commit 5c4438a: [Minor] Add explicit move operators for mime_string

Vsevolod Stakhov vsevolod at highsecure.ru
Fri Oct 8 13:42:04 UTC 2021


Author: Vsevolod Stakhov
Date: 2021-10-08 14:39:40 +0100
URL: https://github.com/rspamd/rspamd/commit/5c4438a5bb7656b36cf9c5299cfbfa32f2834b7e (HEAD -> master)

[Minor] Add explicit move operators for mime_string

---
 src/libmime/mime_string.hxx | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/libmime/mime_string.hxx b/src/libmime/mime_string.hxx
index 94bdafb02..fbd03206a 100644
--- a/src/libmime/mime_string.hxx
+++ b/src/libmime/mime_string.hxx
@@ -283,6 +283,11 @@ public:
 	basic_mime_string(const view_type &st,
 					  const Allocator& alloc = Allocator()) noexcept :
 			basic_mime_string(st.data(), st.size(), alloc) {}
+	/* Explicit move ctor */
+	basic_mime_string(basic_mime_string &&other) noexcept {
+		*this = std::move(other);
+	}
+
 
 	/**
 	 * Creates a string with a filter function. It is calee responsibility to
@@ -310,6 +315,14 @@ public:
 					  const Allocator& alloc = Allocator()) noexcept :
 			basic_mime_string(st.data(), st.size(), std::move(filt), alloc) {}
 
+	/* It seems some libc++ implementations still perform copy, this might fix them */
+	basic_mime_string& operator=(basic_mime_string &&other) {
+		storage = std::move(other.storage);
+		filter_func = std::move(other.filter_func);
+
+		return *this;
+	}
+
 	constexpr auto size() const noexcept -> std::size_t {
 		return storage.size();
 	}


More information about the Commits mailing list