diff options
author | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-11 00:31:55 +0000 |
---|---|---|
committer | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-11 00:31:55 +0000 |
commit | f3d40c0d1bc7b80191cec49dd7e205e9a18a6f36 (patch) | |
tree | 9b08d142c919c388ab0f8be9d3ab9cf23414fd92 /net/disk_cache | |
parent | 0d1fde91d740aafa04b9b35e634dea017464adb2 (diff) | |
download | chromium_src-f3d40c0d1bc7b80191cec49dd7e205e9a18a6f36.zip chromium_src-f3d40c0d1bc7b80191cec49dd7e205e9a18a6f36.tar.gz chromium_src-f3d40c0d1bc7b80191cec49dd7e205e9a18a6f36.tar.bz2 |
Don't access the first (index 0) element of an empty vector
(of size 0).
Visual C++ 2010 reports the "vector subscript out of range"
in Debug builds.
R=agayev@chromium.org,rvargas@chromium.org
BUG=157187
TEST=net_unittests --gtest_filter="FlashCacheTest.*" --gtest_repeat=10 --shuffle
Review URL: https://chromiumcodereview.appspot.com/11468040
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172206 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache')
-rw-r--r-- | net/disk_cache/flash/cache_entry.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/disk_cache/flash/cache_entry.cc b/net/disk_cache/flash/cache_entry.cc index a8bfb42..f063629 100644 --- a/net/disk_cache/flash/cache_entry.cc +++ b/net/disk_cache/flash/cache_entry.cc @@ -105,8 +105,8 @@ int CacheEntry::WriteData(int index, int offset, net::IOBuffer* buf, // TODO(agayev): Currently, only append and overwrite is supported. Add // support for arbitrary writes. DCHECK(!offset || offset == stream.size); - if (stream.write_buffer.capacity() < new_size) - stream.write_buffer.reserve(new_size); + if (stream.write_buffer.size() < new_size) + stream.write_buffer.resize(new_size); memcpy(&streams_[index].write_buffer[offset], buf->data(), buf_len); } stream.size = new_size; @@ -144,8 +144,10 @@ bool CacheEntry::Save() { if (!store_->WriteData(stream_sizes, kFlashCacheEntryHeaderSize)) return false; for (int i = 0; i < kFlashCacheEntryNumStreams; ++i) { - if (!store_->WriteData(&streams_[i].write_buffer[0], streams_[i].size)) + if (streams_[i].size > 0 && + !store_->WriteData(&streams_[i].write_buffer[0], streams_[i].size)) { return false; + } } store_->CloseEntry(id_); return true; |