From: Danny Al-Gaaf Date: Wed, 27 Feb 2013 18:14:03 +0000 (+0100) Subject: bloom_filter.hpp: check for self assignment X-Git-Tag: v0.59~84^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ca71457bf0ce1f0110e2996c7f5692fbcb03aa28;p=ceph.git bloom_filter.hpp: check for self assignment Check for self assignment in operator= to avoid problems with dynamic memory (cppcheck). Signed-off-by: Danny Al-Gaaf --- diff --git a/src/include/bloom_filter.hpp b/src/include/bloom_filter.hpp index 66f620c8df92..41aba4bad47a 100644 --- a/src/include/bloom_filter.hpp +++ b/src/include/bloom_filter.hpp @@ -72,17 +72,19 @@ public: bloom_filter& operator = (const bloom_filter& filter) { - salt_count_ = filter.salt_count_; - table_size_ = filter.table_size_; - raw_table_size_ = filter.raw_table_size_; - predicted_inserted_element_count_ = filter.predicted_inserted_element_count_; - inserted_element_count_ = filter.inserted_element_count_; - random_seed_ = filter.random_seed_; - desired_false_positive_probability_ = filter.desired_false_positive_probability_; - delete[] bit_table_; - bit_table_ = new cell_type[raw_table_size_]; - std::copy(filter.bit_table_,filter.bit_table_ + raw_table_size_,bit_table_); - salt_ = filter.salt_; + if (this != &filter) { + salt_count_ = filter.salt_count_; + table_size_ = filter.table_size_; + raw_table_size_ = filter.raw_table_size_; + predicted_inserted_element_count_ = filter.predicted_inserted_element_count_; + inserted_element_count_ = filter.inserted_element_count_; + random_seed_ = filter.random_seed_; + desired_false_positive_probability_ = filter.desired_false_positive_probability_; + delete[] bit_table_; + bit_table_ = new cell_type[raw_table_size_]; + std::copy(filter.bit_table_,filter.bit_table_ + raw_table_size_,bit_table_); + salt_ = filter.salt_; + } return *this; }