summaryrefslogtreecommitdiffstats
path: root/chrome/browser/safe_browsing
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-09 00:56:22 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-09 00:56:22 +0000
commit88a489591b85c207049c5d89953a1a909b906aa8 (patch)
treec9536a4b2f26d0be7f17f8df5bca2b70d7d0b5cb /chrome/browser/safe_browsing
parentfe940fb40271e2a039a147e7a7385bfcb42e7083 (diff)
downloadchromium_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.cc14
-rw-r--r--chrome/browser/safe_browsing/safe_browsing_database_bloom.h2
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);