diff options
author | David Tardon <dtardon@redhat.com> | 2018-03-25 14:25:47 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2018-03-25 14:25:47 +0200 |
commit | 40c8a1d8216bebfccfcea5ec55af2848f3a72170 (patch) | |
tree | 32a328bf4a25c8685ec7dc7afef35cc95663f3f0 | |
parent | 467618a5b883c7303fc6ef8e10756e203ceaed11 (diff) |
guard against self-assignment
Change-Id: I2eff7abe7d341455c111291ecf81ff348846bc11
-rw-r--r-- | src/lib/VSDCharacterList.cpp | 11 | ||||
-rw-r--r-- | src/lib/VSDGeometryList.cpp | 11 | ||||
-rw-r--r-- | src/lib/VSDParagraphList.cpp | 11 |
3 files changed, 21 insertions, 12 deletions
diff --git a/src/lib/VSDCharacterList.cpp b/src/lib/VSDCharacterList.cpp index 65de7af..6f9fe8e 100644 --- a/src/lib/VSDCharacterList.cpp +++ b/src/lib/VSDCharacterList.cpp @@ -88,10 +88,13 @@ libvisio::VSDCharacterList::VSDCharacterList(const libvisio::VSDCharacterList &c libvisio::VSDCharacterList &libvisio::VSDCharacterList::operator=(const libvisio::VSDCharacterList &charList) { - clear(); - for (auto iter = charList.m_elements.begin(); iter != charList.m_elements.end(); ++iter) - m_elements[iter->first] = clone(iter->second); - m_elementsOrder = charList.m_elementsOrder; + if (this != &charList) + { + clear(); + for (auto iter = charList.m_elements.begin(); iter != charList.m_elements.end(); ++iter) + m_elements[iter->first] = clone(iter->second); + m_elementsOrder = charList.m_elementsOrder; + } return *this; } diff --git a/src/lib/VSDGeometryList.cpp b/src/lib/VSDGeometryList.cpp index ac1b616..92746d8 100644 --- a/src/lib/VSDGeometryList.cpp +++ b/src/lib/VSDGeometryList.cpp @@ -579,10 +579,13 @@ libvisio::VSDGeometryList::VSDGeometryList(const VSDGeometryList &geomList) : libvisio::VSDGeometryList &libvisio::VSDGeometryList::operator=(const VSDGeometryList &geomList) { - clear(); - for (auto iter = geomList.m_elements.begin(); iter != geomList.m_elements.end(); ++iter) - m_elements[iter->first] = clone(iter->second); - m_elementsOrder = geomList.m_elementsOrder; + if (this != &geomList) + { + clear(); + for (auto iter = geomList.m_elements.begin(); iter != geomList.m_elements.end(); ++iter) + m_elements[iter->first] = clone(iter->second); + m_elementsOrder = geomList.m_elementsOrder; + } return *this; } diff --git a/src/lib/VSDParagraphList.cpp b/src/lib/VSDParagraphList.cpp index f279bb8..c1863a1 100644 --- a/src/lib/VSDParagraphList.cpp +++ b/src/lib/VSDParagraphList.cpp @@ -89,10 +89,13 @@ libvisio::VSDParagraphList::VSDParagraphList(const libvisio::VSDParagraphList &p libvisio::VSDParagraphList &libvisio::VSDParagraphList::operator=(const libvisio::VSDParagraphList ¶List) { - clear(); - for (auto iter = paraList.m_elements.begin(); iter != paraList.m_elements.end(); ++iter) - m_elements[iter->first] = iter->second->clone(); - m_elementsOrder = paraList.m_elementsOrder; + if (this != ¶List) + { + clear(); + for (auto iter = paraList.m_elements.begin(); iter != paraList.m_elements.end(); ++iter) + m_elements[iter->first] = iter->second->clone(); + m_elementsOrder = paraList.m_elementsOrder; + } return *this; } |