Index: net/disk_cache/block_files.cc |
=================================================================== |
--- net/disk_cache/block_files.cc (revision 22968) |
+++ net/disk_cache/block_files.cc (working copy) |
@@ -237,24 +237,18 @@ |
} |
std::wstring name = Name(index); |
- MappedFile* file = new MappedFile(); |
- file->AddRef(); |
+ scoped_refptr<MappedFile> file(new MappedFile()); |
if (!file->Init(name, kBlockHeaderSize)) { |
- NOTREACHED(); |
LOG(ERROR) << "Failed to open " << name; |
- file->Release(); |
return false; |
} |
if (file->GetLength() < static_cast<size_t>(kBlockHeaderSize)) { |
LOG(ERROR) << "File too small " << name; |
- file->Release(); |
return false; |
} |
- block_files_[index] = file; |
- |
BlockFileHeader* header = reinterpret_cast<BlockFileHeader*>(file->buffer()); |
if (kBlockMagic != header->magic || kCurrentVersion != header->version) { |
LOG(ERROR) << "Invalid file version or magic"; |
@@ -266,6 +260,9 @@ |
if (!FixBlockFileHeader(file)) |
return false; |
} |
+ |
+ DCHECK(!block_files_[index]); |
+ file.swap(&block_files_[index]); |
return true; |
} |