Chromium Code Reviews| Index: net/disk_cache/simple/simple_index.cc |
| diff --git a/net/disk_cache/simple/simple_index.cc b/net/disk_cache/simple/simple_index.cc |
| index caec19f6068fd9fa2e1571558419ad2ca3096b71..78ce87ed71d6c9006f3b67cdfc5575d3bc9439b3 100644 |
| --- a/net/disk_cache/simple/simple_index.cc |
| +++ b/net/disk_cache/simple/simple_index.cc |
| @@ -359,18 +359,24 @@ void SimpleIndex::MergeInitializingSet( |
| index_file_entries->erase(*it); |
| } |
| - // Recalculate the cache size while merging the two sets. |
| - for (EntrySet::const_iterator it = index_file_entries->begin(); |
| + for (EntrySet::const_iterator it = entries_set_.begin(); |
| + it != entries_set_.end(); ++it) { |
| + const uint64 entry_hash = it->first; |
| + std::pair<EntrySet::iterator, bool> insert_result = |
| + index_file_entries->insert(EntrySet::value_type(entry_hash, |
| + EntryMetadata())); |
| + EntrySet::iterator& possibly_inserted_entry = insert_result.first; |
| + possibly_inserted_entry->second = it->second; |
|
Randy Smith (Not in Mondays)
2013/08/12 17:02:20
Suggestion: Why not test insert_result.second to d
gavinp
2013/08/13 11:11:05
I think it's just a copy of EntrySet::data_type yo
|
| + } |
| + |
| + uint64 merged_cache_size = 0; |
| + for (EntrySet::iterator it = index_file_entries->begin(); |
| it != index_file_entries->end(); ++it) { |
| - // If there is already an entry in the current entries_set_, we need to |
| - // merge the new data there with the data loaded in the initialization. |
| - EntrySet::iterator current_entry = entries_set_.find(it->first); |
| - // When Merging, existing data in the |current_entry| will prevail. |
| - if (current_entry == entries_set_.end()) { |
| - InsertInEntrySet(it->first, it->second, &entries_set_); |
| - cache_size_ += it->second.GetEntrySize(); |
| - } |
| + merged_cache_size += it->second.GetEntrySize(); |
| } |
| + |
| + entries_set_.swap(*index_file_entries); |
| + cache_size_ = merged_cache_size; |
| initialized_ = true; |
| removed_entries_.clear(); |