diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-09 00:56:22 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-09 00:56:22 +0000 |
commit | 88a489591b85c207049c5d89953a1a909b906aa8 (patch) | |
tree | c9536a4b2f26d0be7f17f8df5bca2b70d7d0b5cb /chrome/browser/safe_browsing | |
parent | fe940fb40271e2a039a147e7a7385bfcb42e7083 (diff) | |
download | chromium_src-88a489591b85c207049c5d89953a1a909b906aa8.zip chromium_src-88a489591b85c207049c5d89953a1a909b906aa8.tar.gz chromium_src-88a489591b85c207049c5d89953a1a909b906aa8.tar.bz2 |
Fix memory leak I introduced in my earlier change.
BUG=27035
Review URL: http://codereview.chromium.org/376020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/safe_browsing')
-rw-r--r-- | chrome/browser/safe_browsing/safe_browsing_database_bloom.cc | 14 | ||||
-rw-r--r-- | chrome/browser/safe_browsing/safe_browsing_database_bloom.h | 2 |
2 files changed, 7 insertions, 9 deletions
diff --git a/chrome/browser/safe_browsing/safe_browsing_database_bloom.cc b/chrome/browser/safe_browsing/safe_browsing_database_bloom.cc index 59e6668..98bc709 100644 --- a/chrome/browser/safe_browsing/safe_browsing_database_bloom.cc +++ b/chrome/browser/safe_browsing/safe_browsing_database_bloom.cc @@ -1008,8 +1008,7 @@ bool SafeBrowsingDatabaseBloom::WritePrefixes( SBPair* adds, const std::vector<bool>& adds_removed, int* new_add_count, - BloomFilter** filter) { - *filter = NULL; + scoped_refptr<BloomFilter>* filter) { *new_add_count = 0; SQLITE_UNIQUE_STATEMENT(insert, *statement_cache_, @@ -1026,7 +1025,7 @@ bool SafeBrowsingDatabaseBloom::WritePrefixes( int filter_size = std::min(number_of_keys * BloomFilter::kBloomFilterSizeRatio, BloomFilter::kBloomFilterMaxSize * 8); - scoped_refptr<BloomFilter> new_filter = new BloomFilter(filter_size); + *filter = new BloomFilter(filter_size); SBPair* add = adds; int new_count = 0; @@ -1038,7 +1037,7 @@ bool SafeBrowsingDatabaseBloom::WritePrefixes( add++; continue; } - new_filter->Insert(add->prefix); + (*filter)->Insert(add->prefix); insert->bind_int(0, add->chunk_id); insert->bind_int(1, add->prefix); int rv = insert->step(); @@ -1054,7 +1053,6 @@ bool SafeBrowsingDatabaseBloom::WritePrefixes( } *new_add_count = new_count; - *filter = new_filter.release(); return true; } @@ -1256,7 +1254,7 @@ void SafeBrowsingDatabaseBloom::BuildBloomFilter() { // Write out the remaining add prefixes to the filter and database. int new_count; - BloomFilter* filter; + scoped_refptr<BloomFilter> filter; if (!WritePrefixes(adds, adds_removed, &new_count, &filter)) return; @@ -1282,7 +1280,7 @@ void SafeBrowsingDatabaseBloom::BuildBloomFilter() { { AutoLock lock(lookup_lock_); add_count_ = new_count; - bloom_filter_ = filter; + bloom_filter_.swap(filter); hash_cache_.swap(add_cache); } @@ -1313,7 +1311,7 @@ void SafeBrowsingDatabaseBloom::BuildBloomFilter() { UMA_HISTOGRAM_LONG_TIMES("SB2.BuildFilter", bloom_gen); UMA_HISTOGRAM_COUNTS("SB2.AddPrefixes", add_count_); UMA_HISTOGRAM_COUNTS("SB2.SubPrefixes", subs); - UMA_HISTOGRAM_COUNTS("SB2.FilterSize", filter->size()); + UMA_HISTOGRAM_COUNTS("SB2.FilterSize", bloom_filter_->size()); int64 size_64; if (file_util::GetFileSize(filename_, &size_64)) UMA_HISTOGRAM_COUNTS("SB2.DatabaseBytes", static_cast<int>(size_64)); diff --git a/chrome/browser/safe_browsing/safe_browsing_database_bloom.h b/chrome/browser/safe_browsing/safe_browsing_database_bloom.h index be3f4e5..c6a65b3 100644 --- a/chrome/browser/safe_browsing/safe_browsing_database_bloom.h +++ b/chrome/browser/safe_browsing/safe_browsing_database_bloom.h @@ -109,7 +109,7 @@ class SafeBrowsingDatabaseBloom : public SafeBrowsingDatabase { bool UpdateTables(); bool WritePrefixes(SBPair* adds, const std::vector<bool>& adds_removed, - int* new_add_count, BloomFilter** filter); + int* new_add_count, scoped_refptr<BloomFilter>* filter); void WriteFullHashes(HashCache* hash_cache, bool is_add); void WriteFullHashList(const HashList& hash_list, bool is_add); |