diff options
author | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-13 23:59:05 +0000 |
---|---|---|
committer | michaeln@google.com <michaeln@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-13 23:59:05 +0000 |
commit | 4fc6cb64e5ac6afe4aeb9c247b95c97fb785e9b2 (patch) | |
tree | 683c464e7abe1c2d2b4bf3ba53feec7dd07c1d8e | |
parent | 4287a3dba847dce805997314fcd560a5dadc1738 (diff) | |
download | chromium_src-4fc6cb64e5ac6afe4aeb9c247b95c97fb785e9b2.zip chromium_src-4fc6cb64e5ac6afe4aeb9c247b95c97fb785e9b2.tar.gz chromium_src-4fc6cb64e5ac6afe4aeb9c247b95c97fb785e9b2.tar.bz2 |
Fix Crash in DeleteTask<quota::QuotaTask>::Run
BUG=85901
TEST=manual
Review URL: http://codereview.chromium.org/7147004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88924 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | webkit/quota/usage_tracker.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/webkit/quota/usage_tracker.cc b/webkit/quota/usage_tracker.cc index 33d5e23..ff08e19 100644 --- a/webkit/quota/usage_tracker.cc +++ b/webkit/quota/usage_tracker.cc @@ -40,19 +40,23 @@ class ClientUsageTracker::GatherUsageTaskBase : public QuotaTask { // We do not get usage for origins for which we have valid usage cache. client_tracker()->DetermineOriginsToGetUsage(origins, &origins_to_process); if (origins_to_process.empty()) { - // Nothing to be done. CallCompleted(); DeleteSoon(); + return; } + + // First, fully populate the pending queue because GetOriginUsage may call + // the completion callback immediately. for (std::set<GURL>::const_iterator iter = origins_to_process.begin(); - iter != origins_to_process.end(); - iter++) { + iter != origins_to_process.end(); iter++) pending_origins_.push_back(*iter); + + for (std::set<GURL>::const_iterator iter = origins_to_process.begin(); + iter != origins_to_process.end(); iter++) client_->GetOriginUsage( *iter, tracker_->type(), callback_factory_.NewCallback(&GatherUsageTaskBase::DidGetUsage)); - } } bool IsOriginDone(const GURL& origin) const { |