]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
bloom_filter.hpp: check for self assignment
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 27 Feb 2013 18:14:03 +0000 (19:14 +0100)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 27 Feb 2013 18:14:03 +0000 (19:14 +0100)
Check for self assignment in operator= to avoid problems with
dynamic memory (cppcheck).

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/include/bloom_filter.hpp

index 66f620c8df9251469ad471bff0858887a3f6a404..41aba4bad47a855abad5dae0ece0e75cdd75be7c 100644 (file)
@@ -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;
    }