| Index: storage/browser/blob/blob_reader.cc
|
| diff --git a/storage/browser/blob/blob_reader.cc b/storage/browser/blob/blob_reader.cc
|
| index 9c6375d5c7d3b2a782f4554068333d8f81bca628..fefcbf2b64320fd110126a5453c1fef9c7668948 100644
|
| --- a/storage/browser/blob/blob_reader.cc
|
| +++ b/storage/browser/blob/blob_reader.cc
|
| @@ -13,7 +13,6 @@
|
| #include "base/time/time.h"
|
| #include "base/trace_event/trace_event.h"
|
| #include "net/base/io_buffer.h"
|
| -#include "net/base/net_errors.h"
|
| #include "net/disk_cache/disk_cache.h"
|
| #include "storage/browser/blob/blob_data_handle.h"
|
| #include "storage/browser/blob/blob_data_snapshot.h"
|
| @@ -43,7 +42,6 @@ BlobReader::BlobReader(
|
| base::SequencedTaskRunner* file_task_runner)
|
| : file_stream_provider_(file_stream_provider.Pass()),
|
| file_task_runner_(file_task_runner),
|
| - net_error_(net::OK),
|
| weak_factory_(this) {
|
| if (blob_handle) {
|
| blob_data_ = blob_handle->CreateSnapshot().Pass();
|
| @@ -51,7 +49,6 @@ BlobReader::BlobReader(
|
| }
|
|
|
| BlobReader::~BlobReader() {
|
| - STLDeleteValues(&index_to_reader_);
|
| }
|
|
|
| BlobReader::Status BlobReader::CalculateSize(
|
| @@ -61,7 +58,7 @@ BlobReader::Status BlobReader::CalculateSize(
|
| if (!blob_data_.get()) {
|
| return ReportError(net::ERR_FILE_NOT_FOUND);
|
| }
|
| -
|
| + dirty_ = true;
|
| net_error_ = net::OK;
|
| total_size_ = 0;
|
| const auto& items = blob_data_->items();
|
| @@ -187,6 +184,7 @@ BlobReader::Status BlobReader::Read(net::IOBuffer* buffer,
|
| void BlobReader::Kill() {
|
| DeleteCurrentFileReader();
|
| weak_factory_.InvalidateWeakPtrs();
|
| + read_buf_ = nullptr;
|
| }
|
|
|
| bool BlobReader::IsInMemory() const {
|
| @@ -505,14 +503,14 @@ FileStreamReader* BlobReader::GetOrCreateFileReaderAtIndex(size_t index) {
|
| return nullptr;
|
| auto it = index_to_reader_.find(index);
|
| if (it != index_to_reader_.end()) {
|
| - DCHECK(it->second);
|
| - return it->second;
|
| + DCHECK(it->second.get());
|
| + return it->second.get();
|
| }
|
| scoped_ptr<FileStreamReader> reader = CreateFileStreamReader(item, 0);
|
| FileStreamReader* ret_value = reader.get();
|
| if (!ret_value)
|
| return nullptr;
|
| - index_to_reader_[index] = reader.release();
|
| + index_to_reader_[index] = std::move(reader);
|
| return ret_value;
|
| }
|
|
|
| @@ -551,19 +549,11 @@ scoped_ptr<FileStreamReader> BlobReader::CreateFileStreamReader(
|
|
|
| void BlobReader::SetFileReaderAtIndex(size_t index,
|
| scoped_ptr<FileStreamReader> reader) {
|
| - auto found = index_to_reader_.find(current_item_index_);
|
| - if (found != index_to_reader_.end()) {
|
| - if (found->second) {
|
| - delete found->second;
|
| - }
|
| - if (!reader.get()) {
|
| - index_to_reader_.erase(found);
|
| - return;
|
| - }
|
| - found->second = reader.release();
|
| - } else if (reader.get()) {
|
| - index_to_reader_[current_item_index_] = reader.release();
|
| + if (!reader.get()) {
|
| + index_to_reader_.erase(index);
|
| + return;
|
| }
|
| + index_to_reader_[index] = std::move(reader);
|
| }
|
|
|
| } // namespace storage
|
|
|