Index: net/disk_cache/blockfile/rankings.cc |
diff --git a/net/disk_cache/blockfile/rankings.cc b/net/disk_cache/blockfile/rankings.cc |
index 7c93b431bcbbb8fd3cb1eba85e6dfb9e69ee3ef4..496008d93ec3f6b7d2d7726e9e68cde32d8f6aa9 100644 |
--- a/net/disk_cache/blockfile/rankings.cc |
+++ b/net/disk_cache/blockfile/rankings.cc |
@@ -202,14 +202,16 @@ Rankings::ScopedRankingsBlock::ScopedRankingsBlock( |
Rankings* rankings, CacheRankingsBlock* node) |
: scoped_ptr<CacheRankingsBlock>(node), rankings_(rankings) {} |
-Rankings::Iterator::Iterator(Rankings* rankings) { |
+Rankings::Iterator::Iterator() { |
memset(this, 0, sizeof(Iterator)); |
- my_rankings = rankings; |
} |
-Rankings::Iterator::~Iterator() { |
- for (int i = 0; i < 3; i++) |
- ScopedRankingsBlock(my_rankings, nodes[i]); |
+void Rankings::Iterator::Reset() { |
+ if (my_rankings) { |
+ for (int i = 0; i < 3; i++) |
+ ScopedRankingsBlock(my_rankings, nodes[i]); |
+ } |
+ memset(this, 0, sizeof(Iterator)); |
} |
Rankings::Rankings() : init_(false) {} |
@@ -897,10 +899,8 @@ void Rankings::InvalidateIterators(CacheRankingsBlock* node) { |
CacheAddr address = node->address().value(); |
for (IteratorList::iterator it = iterators_.begin(); it != iterators_.end(); |
++it) { |
- if (it->first == address) { |
- DLOG(INFO) << "Invalidating iterator at 0x" << std::hex << address; |
+ if (it->first == address) |
it->second->Discard(); |
- } |
} |
} |