diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-30 22:11:18 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-30 22:11:18 +0000 |
commit | b1e651a3ce32901ee19f2966d343987c82476b10 (patch) | |
tree | de36df20e06081fed03ed59b46c2cf9fb9a5bdf4 /net/disk_cache | |
parent | 4361c7ca9c1a850f3c075612bd0e20630b821355 (diff) | |
download | chromium_src-b1e651a3ce32901ee19f2966d343987c82476b10.zip chromium_src-b1e651a3ce32901ee19f2966d343987c82476b10.tar.gz chromium_src-b1e651a3ce32901ee19f2966d343987c82476b10.tar.bz2 |
Disk Cache: Add a quick return path for truncating an empty stream
and make sure that Flush() doesn't fail when it has nothing to do.
BUG=56872, 57395
TEST=none
Review URL: http://codereview.chromium.org/3551005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61124 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache')
-rw-r--r-- | net/disk_cache/entry_impl.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/disk_cache/entry_impl.cc b/net/disk_cache/entry_impl.cc index 0655b28..24796ea 100644 --- a/net/disk_cache/entry_impl.cc +++ b/net/disk_cache/entry_impl.cc @@ -593,8 +593,10 @@ int EntryImpl::WriteDataImpl(int index, int offset, net::IOBuffer* buf, } Addr address(entry_.Data()->data_addr[index]); - if (truncate && offset + buf_len == 0) { - DCHECK(!address.is_initialized()); + if (offset + buf_len == 0) { + if (truncate) { + DCHECK(!address.is_initialized()); + } return 0; } @@ -1010,6 +1012,9 @@ bool EntryImpl::PrepareTarget(int index, int offset, int buf_len, if (truncate) return HandleTruncation(index, offset, buf_len); + if (!offset && !buf_len) + return true; + Addr address(entry_.Data()->data_addr[index]); if (address.is_initialized()) { if (address.is_block_file() && !MoveToLocalBuffer(index)) @@ -1169,7 +1174,7 @@ bool EntryImpl::Flush(int index, int min_len) { DCHECK(!address.is_initialized() || address.is_separate_file()); int size = std::max(entry_.Data()->data_size[index], min_len); - if (!address.is_initialized() && !CreateDataBlock(index, size)) + if (size && !address.is_initialized() && !CreateDataBlock(index, size)) return false; if (!entry_.Data()->data_size[index]) { |