summaryrefslogtreecommitdiffstats
path: root/content/browser/resource_context_impl.cc
diff options
context:
space:
mode:
authorrdsmith@chromium.org <rdsmith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 17:40:52 +0000
committerrdsmith@chromium.org <rdsmith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-15 17:40:52 +0000
commit10848bb9170ce6b242c3f682dd9a5aa85db65094 (patch)
tree3a4d46a224b89031a1026ef6197f6e5392ee68d2 /content/browser/resource_context_impl.cc
parent14ddf3e58835c140a098fd82e73f6c9996935154 (diff)
downloadchromium_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.cc12
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(