| Index: webkit/glue/resource_fetcher.cc
|
| ===================================================================
|
| --- webkit/glue/resource_fetcher.cc (revision 71961)
|
| +++ webkit/glue/resource_fetcher.cc (working copy)
|
| @@ -53,6 +53,18 @@
|
| loader_->loadAsynchronously(request, this);
|
| }
|
|
|
| +void ResourceFetcher::RunCallback(const WebURLResponse& response,
|
| + const std::string& data) {
|
| + if (!callback_.get())
|
| + return;
|
| +
|
| + // Take care to clear callback_ before running the callback as it may lead to
|
| + // our destruction.
|
| + scoped_ptr<Callback> callback;
|
| + callback.swap(callback_);
|
| + callback->Run(response, data);
|
| +}
|
| +
|
| /////////////////////////////////////////////////////////////////////////////
|
| // WebURLLoaderClient methods
|
|
|
| @@ -93,10 +105,7 @@
|
| DCHECK(!completed_);
|
| completed_ = true;
|
|
|
| - if (callback_.get()) {
|
| - callback_->Run(response_, data_);
|
| - callback_.reset();
|
| - }
|
| + RunCallback(response_, data_);
|
| }
|
|
|
| void ResourceFetcher::didFail(WebURLLoader* loader, const WebURLError& error) {
|
| @@ -104,10 +113,7 @@
|
| completed_ = true;
|
|
|
| // Go ahead and tell our delegate that we're done.
|
| - if (callback_.get()) {
|
| - callback_->Run(WebURLResponse(), std::string());
|
| - callback_.reset();
|
| - }
|
| + RunCallback(WebURLResponse(), std::string());
|
| }
|
|
|
| /////////////////////////////////////////////////////////////////////////////
|
|
|