From bbb1d86d3d8899e65c01fde646552e5002c310a3 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Tue, 3 Dec 2019 16:45:41 -0600 Subject: [PATCH] filterparameter: Protect against self-copy/self-assign --- src/common/filterparameter.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/common/filterparameter.cpp b/src/common/filterparameter.cpp index f99579ef6..40b6050e7 100644 --- a/src/common/filterparameter.cpp +++ b/src/common/filterparameter.cpp @@ -101,7 +101,8 @@ QList RichParameterSet::getFloatList(QString name) const { return find RichParameterSet& RichParameterSet::operator=( const RichParameterSet& rps ) { - return copy(rps); + copy(rps); + return *this; } bool RichParameterSet::operator==( const RichParameterSet& rps ) @@ -132,13 +133,15 @@ RichParameterSet::~RichParameterSet() RichParameterSet& RichParameterSet::copy( const RichParameterSet& rps ) { - clear(); + if (this != &rps) { + clear(); - RichParameterCopyConstructor copyvisitor; - for(int ii = 0;ii < rps.paramList.size();++ii) - { - rps.paramList.at(ii)->accept(copyvisitor); - paramList.push_back(copyvisitor.lastCreated); + RichParameterCopyConstructor copyvisitor; + for(int ii = 0;ii < rps.paramList.size();++ii) + { + rps.paramList.at(ii)->accept(copyvisitor); + paramList.push_back(copyvisitor.lastCreated); + } } return (*this); }