Index: net/url_request/url_request_file_job.cc |
diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc |
index 011a0daff23c8dee4617734d3148a05592c8c364..74e61315980c0238c6795ef55acf2e03d86722bf 100644 |
--- a/net/url_request/url_request_file_job.cc |
+++ b/net/url_request/url_request_file_job.cc |
@@ -294,19 +294,21 @@ void URLRequestFileJob::DidSeek(int64 result) { |
} |
void URLRequestFileJob::DidRead(scoped_refptr<net::IOBuffer> buf, int result) { |
- OnReadComplete(buf.get(), result); |
- buf = NULL; |
if (result > 0) { |
SetStatus(URLRequestStatus()); // Clear the IO_PENDING status |
- } else if (result == 0) { |
+ remaining_bytes_ -= result; |
+ DCHECK_GE(remaining_bytes_, 0); |
+ } |
+ |
+ OnReadComplete(buf.get(), result); |
+ buf = NULL; |
+ |
+ if (result == 0) { |
NotifyDone(URLRequestStatus()); |
- } else { |
+ } else if (result < 0) { |
NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); |
} |
- remaining_bytes_ -= result; |
- DCHECK_GE(remaining_bytes_, 0); |
- |
NotifyReadComplete(result); |
} |