forked from qt-creator/qt-creator
Clang: Fix move assignment in ClangString
Don't move if you assign to yourself. Change-Id: I33977fe34cc89849337c17c1ff418ff48d68e708 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
@@ -49,20 +49,23 @@ bool ClangString::isNull() const
|
|||||||
return cxString.data == nullptr;
|
return cxString.data == nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangString &ClangString::operator=(ClangString &&clangString)
|
ClangString &ClangString::operator=(ClangString &&other)
|
||||||
{
|
{
|
||||||
cxString = std::move(clangString.cxString);
|
if (this != &other) {
|
||||||
clangString.cxString.data = nullptr;
|
clang_disposeString(cxString);
|
||||||
clangString.cxString.private_flags = 0;
|
cxString = std::move(other.cxString);
|
||||||
|
other.cxString.data = nullptr;
|
||||||
|
other.cxString.private_flags = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangString::ClangString(ClangString &&clangString)
|
ClangString::ClangString(ClangString &&other)
|
||||||
: cxString(std::move(clangString.cxString))
|
: cxString(std::move(other.cxString))
|
||||||
{
|
{
|
||||||
clangString.cxString.data = nullptr;
|
other.cxString.data = nullptr;
|
||||||
clangString.cxString.private_flags = 0;
|
other.cxString.private_flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangString::operator Utf8String() const
|
ClangString::operator Utf8String() const
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ public:
|
|||||||
ClangString(CXString cxString);
|
ClangString(CXString cxString);
|
||||||
~ClangString();
|
~ClangString();
|
||||||
|
|
||||||
ClangString(const ClangString &clangString) = delete;
|
ClangString(const ClangString &) = delete;
|
||||||
const ClangString &operator=(const ClangString &clangString) = delete;
|
const ClangString &operator=(const ClangString &) = delete;
|
||||||
|
|
||||||
ClangString(ClangString &&clangString);
|
ClangString(ClangString &&other);
|
||||||
ClangString &operator=(ClangString &&clangString);
|
ClangString &operator=(ClangString &&other);
|
||||||
|
|
||||||
operator Utf8String() const;
|
operator Utf8String() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user