| Index: google_apis/drive/base_requests.cc
|
| diff --git a/google_apis/drive/base_requests.cc b/google_apis/drive/base_requests.cc
|
| index 4a5ca708781b26fcbe46fd2e14bf264be3211392..dc45b3f51b3da86da187b1f389fb0d9fdad820b8 100644
|
| --- a/google_apis/drive/base_requests.cc
|
| +++ b/google_apis/drive/base_requests.cc
|
| @@ -122,6 +122,10 @@ ResponseWriter::ResponseWriter(net::URLFetcher* url_fetcher,
|
| ResponseWriter::~ResponseWriter() {
|
| }
|
|
|
| +void ResponseWriter::Detach() {
|
| + url_fetcher_ = NULL;
|
| +}
|
| +
|
| void ResponseWriter::DisownFile() {
|
| DCHECK(file_writer_);
|
| file_writer_->DisownFile();
|
| @@ -140,7 +144,8 @@ int ResponseWriter::Write(net::IOBuffer* buffer,
|
| const net::CompletionCallback& callback) {
|
| // |get_content_callback_| and |file_writer_| are used only when the response
|
| // code is successful one.
|
| - if (IsSuccessfulResponseCode(url_fetcher_->GetResponseCode())) {
|
| + if (url_fetcher_ &&
|
| + IsSuccessfulResponseCode(url_fetcher_->GetResponseCode())) {
|
| if (!get_content_callback_.is_null()) {
|
| get_content_callback_.Run(
|
| HTTP_SUCCESS,
|
| @@ -290,6 +295,7 @@ void UrlFetchRequestBase::GetOutputFilePath(
|
| }
|
|
|
| void UrlFetchRequestBase::Cancel() {
|
| + response_writer_->Detach();
|
| response_writer_ = NULL;
|
| url_fetcher_.reset(NULL);
|
| RunCallbackOnPrematureFailure(GDATA_CANCELLED);
|
|
|