Index: chrome/browser/favicon/favicon_handler.cc |
diff --git a/chrome/browser/favicon/favicon_handler.cc b/chrome/browser/favicon/favicon_handler.cc |
index 1db27226d5804981656d23369223bcb93d559b00..9f1fe25c12408dcc9185f166dabb3de8c57f1cc8 100644 |
--- a/chrome/browser/favicon/favicon_handler.cc |
+++ b/chrome/browser/favicon/favicon_handler.cc |
@@ -381,8 +381,13 @@ void FaviconHandler::OnDidDownloadFavicon( |
return; |
} |
+ DownloadRequest download_request = i->second; |
+ download_requests_.erase(i); |
+ |
if (current_candidate() && |
- DoUrlAndIconMatch(*current_candidate(), image_url, i->second.icon_type)) { |
+ DoUrlAndIconMatch(*current_candidate(), |
+ image_url, |
+ download_request.icon_type)) { |
bool request_next_icon = true; |
float score = 0.0f; |
gfx::ImageSkia image_skia; |
@@ -412,7 +417,8 @@ void FaviconHandler::OnDidDownloadFavicon( |
// during the downloading. |
if (!bitmaps.empty()) { |
request_next_icon = !UpdateFaviconCandidate( |
- i->second.url, image_url, image, score, i->second.icon_type); |
+ download_request.url, image_url, image, score, |
+ download_request.icon_type); |
} |
} |
if (request_next_icon && !PageChangedSinceFaviconWasRequested() && |
@@ -429,10 +435,10 @@ void FaviconHandler::OnDidDownloadFavicon( |
best_favicon_candidate_.icon_type); |
// Reset candidate. |
image_urls_.clear(); |
+ download_requests_.clear(); |
best_favicon_candidate_ = FaviconCandidate(); |
} |
} |
- download_requests_.erase(i); |
} |
bool FaviconHandler::PageChangedSinceFaviconWasRequested() { |