diff options
author | rdsmith@chromium.org <rdsmith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-15 17:40:52 +0000 |
---|---|---|
committer | rdsmith@chromium.org <rdsmith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-15 17:40:52 +0000 |
commit | 10848bb9170ce6b242c3f682dd9a5aa85db65094 (patch) | |
tree | 3a4d46a224b89031a1026ef6197f6e5392ee68d2 /content/browser/resource_context_impl.cc | |
parent | 14ddf3e58835c140a098fd82e73f6c9996935154 (diff) | |
download | chromium_src-10848bb9170ce6b242c3f682dd9a5aa85db65094.zip chromium_src-10848bb9170ce6b242c3f682dd9a5aa85db65094.tar.gz chromium_src-10848bb9170ce6b242c3f682dd9a5aa85db65094.tar.bz2 |
Fixed CHECKs for use of canceled ResourceContexts in ResourceDispatcherHostImpl.
Checks weren't taking into account the possibility of a later allocation re-using a
deleted pointer.
TBR=willchan@chromium.org
BUG=90971
BUG=100566
TEST="browser_tests --gtest_filter=BrowserCloseTest.DISABLED_DownloadsCloseCheck_1 --gtest_repeat=10 --gtest_also_run_disabled_tests" with no crash.
Review URL: https://chromiumcodereview.appspot.com/10389030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137163 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/resource_context_impl.cc')
-rw-r--r-- | content/browser/resource_context_impl.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/content/browser/resource_context_impl.cc b/content/browser/resource_context_impl.cc index dc90129..f47824d 100644 --- a/content/browser/resource_context_impl.cc +++ b/content/browser/resource_context_impl.cc @@ -179,9 +179,17 @@ AppCacheService* ResourceContext::GetAppCacheService(ResourceContext* context) { context, kAppCacheServicKeyName); } -ResourceContext::~ResourceContext() { +ResourceContext::ResourceContext() { if (ResourceDispatcherHostImpl::Get()) - ResourceDispatcherHostImpl::Get()->CancelRequestsForContext(this); + ResourceDispatcherHostImpl::Get()->AddResourceContext(this); +} + +ResourceContext::~ResourceContext() { + ResourceDispatcherHostImpl* rdhi = ResourceDispatcherHostImpl::Get(); + if (rdhi) { + rdhi->CancelRequestsForContext(this); + rdhi->RemoveResourceContext(this); + } } BlobStorageController* GetBlobStorageControllerForResourceContext( |