diff --git a/src/tools/clangbackend/ipcsource/clangstring.cpp b/src/tools/clangbackend/ipcsource/clangstring.cpp index 00bd83a3a33..200e8342706 100644 --- a/src/tools/clangbackend/ipcsource/clangstring.cpp +++ b/src/tools/clangbackend/ipcsource/clangstring.cpp @@ -49,20 +49,23 @@ bool ClangString::isNull() const return cxString.data == nullptr; } -ClangString &ClangString::operator=(ClangString &&clangString) +ClangString &ClangString::operator=(ClangString &&other) { - cxString = std::move(clangString.cxString); - clangString.cxString.data = nullptr; - clangString.cxString.private_flags = 0; + if (this != &other) { + clang_disposeString(cxString); + cxString = std::move(other.cxString); + other.cxString.data = nullptr; + other.cxString.private_flags = 0; + } return *this; } -ClangString::ClangString(ClangString &&clangString) - : cxString(std::move(clangString.cxString)) +ClangString::ClangString(ClangString &&other) + : cxString(std::move(other.cxString)) { - clangString.cxString.data = nullptr; - clangString.cxString.private_flags = 0; + other.cxString.data = nullptr; + other.cxString.private_flags = 0; } ClangString::operator Utf8String() const diff --git a/src/tools/clangbackend/ipcsource/clangstring.h b/src/tools/clangbackend/ipcsource/clangstring.h index d0b1055a032..f18a6122821 100644 --- a/src/tools/clangbackend/ipcsource/clangstring.h +++ b/src/tools/clangbackend/ipcsource/clangstring.h @@ -43,11 +43,11 @@ public: ClangString(CXString cxString); ~ClangString(); - ClangString(const ClangString &clangString) = delete; - const ClangString &operator=(const ClangString &clangString) = delete; + ClangString(const ClangString &) = delete; + const ClangString &operator=(const ClangString &) = delete; - ClangString(ClangString &&clangString); - ClangString &operator=(ClangString &&clangString); + ClangString(ClangString &&other); + ClangString &operator=(ClangString &&other); operator Utf8String() const;