summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2018-03-25 14:25:47 +0200
committerDavid Tardon <dtardon@redhat.com>2018-03-25 14:25:47 +0200
commit40c8a1d8216bebfccfcea5ec55af2848f3a72170 (patch)
tree32a328bf4a25c8685ec7dc7afef35cc95663f3f0
parent467618a5b883c7303fc6ef8e10756e203ceaed11 (diff)
guard against self-assignment
Change-Id: I2eff7abe7d341455c111291ecf81ff348846bc11
-rw-r--r--src/lib/VSDCharacterList.cpp11
-rw-r--r--src/lib/VSDGeometryList.cpp11
-rw-r--r--src/lib/VSDParagraphList.cpp11
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 &paraList)
{
- 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 != &paraList)
+ {
+ 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;
}