diff options
author | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-08 21:28:47 +0000 |
---|---|---|
committer | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-08 21:28:47 +0000 |
commit | 75ed8829d991b62b4943a29b0140d6803a70cac1 (patch) | |
tree | 570c736b9264258df901c113929f0be309e6c87c /content/browser/loader/resource_loader.cc | |
parent | fb3bf2d6fb8bc7da2cdf0bd5798908672a9697fb (diff) | |
download | chromium_src-75ed8829d991b62b4943a29b0140d6803a70cac1.zip chromium_src-75ed8829d991b62b4943a29b0140d6803a70cac1.tar.gz chromium_src-75ed8829d991b62b4943a29b0140d6803a70cac1.tar.bz2 |
Revert 227318 "Clean up ResourceHandler API."
Could be causing http://crbug.com/305333.
> Clean up ResourceHandler API.
>
> 1. Move URLRequest member to ResourceHandler base class and add convenience functions for subclasses.
> 2. Make OnWillRead take a scoped_refptr to avoid leaking the buffer.
>
> BUG=295239
> TEST=No behavior change.
>
> Review URL: https://codereview.chromium.org/25536005
TBR=creis@chromium.org
Review URL: https://codereview.chromium.org/26472004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227594 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/loader/resource_loader.cc')
-rw-r--r-- | content/browser/loader/resource_loader.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc index 55add72..88c9c85 100644 --- a/content/browser/loader/resource_loader.cc +++ b/content/browser/loader/resource_loader.cc @@ -597,10 +597,7 @@ void ResourceLoader::ReadMore(int* bytes_read) { ResourceRequestInfoImpl* info = GetRequestInfo(); DCHECK(!is_deferred()); - // Make sure we track the buffer in at least one place. This ensures it gets - // deleted even in the case the request has already finished its job and - // doesn't use the buffer. - scoped_refptr<net::IOBuffer> buf; + net::IOBuffer* buf; int buf_size; if (!handler_->OnWillRead(info->GetRequestID(), &buf, &buf_size, -1)) { Cancel(); @@ -610,7 +607,12 @@ void ResourceLoader::ReadMore(int* bytes_read) { DCHECK(buf); DCHECK(buf_size > 0); - request_->Read(buf.get(), buf_size, bytes_read); + // Make sure we track the buffer in at least one place. This ensures it gets + // deleted even in the case the request has already finished its job and + // doesn't use the buffer. + scoped_refptr<net::IOBuffer> tracked_buf(buf); + + request_->Read(tracked_buf.get(), buf_size, bytes_read); // No need to check the return value here as we'll detect errors by // inspecting the URLRequest's status. |