summaryrefslogtreecommitdiffstats
path: root/net/disk_cache
diff options
context:
space:
mode:
authorwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-11 00:31:55 +0000
committerwtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-11 00:31:55 +0000
commitf3d40c0d1bc7b80191cec49dd7e205e9a18a6f36 (patch)
tree9b08d142c919c388ab0f8be9d3ab9cf23414fd92 /net/disk_cache
parent0d1fde91d740aafa04b9b35e634dea017464adb2 (diff)
downloadchromium_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.cc8
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;