Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: chrome/renderer/net/predictor_queue.cc

Issue 6674006: Coverity Fixlets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit squash. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // See header file for description of DnsQueue class 5 // See header file for description of DnsQueue class
6 6
7 #include "chrome/renderer/net/predictor_queue.h" 7 #include "chrome/renderer/net/predictor_queue.h"
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/stats_counters.h" 10 #include "base/metrics/stats_counters.h"
11 11
12 DnsQueue::DnsQueue(BufferSize size) 12 DnsQueue::DnsQueue(BufferSize size)
13 : buffer_(new char[size + 2]), 13 : buffer_(new char[size + 2]),
14 buffer_size_(size + 1), 14 buffer_size_(size + 1),
15 buffer_sentinel_(size + 1), 15 buffer_sentinel_(size + 1),
16 size_(0) { 16 size_(0) {
17 CHECK(0 < static_cast<BufferSize>(size + 3)); // Avoid overflow worries. 17 CHECK(0 < static_cast<BufferSize>(size + 3)); // Avoid overflow worries.
18 buffer_[buffer_sentinel_] = '\0'; // Guard byte to help reading data. 18 buffer_[buffer_sentinel_] = '\0'; // Guard byte to help reading data.
19 readable_ = writeable_ = 0; // Buffer starts empty. 19 readable_ = writeable_ = 0; // Buffer starts empty.
20 } 20 }
21 21
22 DnsQueue::~DnsQueue(void) { 22 DnsQueue::~DnsQueue(void) {
23 } 23 }
24 24
25 void DnsQueue::Clear() {
26 size_ = 0;
27 readable_ = writeable_;
28 DCHECK(Validate());
29 }
30
25 // Push takes an unterminated string plus its length. 31 // Push takes an unterminated string plus its length.
26 // The string must not contain a null terminator. 32 // The string must not contain a null terminator.
27 // Exactly length chars are written, or nothing is written. 33 // Exactly length chars are written, or nothing is written.
28 // Returns true for success, false there was no room to push. 34 // Returns true for success, false there was no room to push.
29 DnsQueue::PushResult DnsQueue::Push(const char* source, 35 DnsQueue::PushResult DnsQueue::Push(const char* source,
30 const size_t unsigned_length) { 36 const size_t unsigned_length) {
31 BufferSize length = static_cast<BufferSize>(unsigned_length); 37 BufferSize length = static_cast<BufferSize>(unsigned_length);
32 if (0 > length+1) // Avoid overflows in conversion to signed. 38 if (0 > length+1) // Avoid overflows in conversion to signed.
33 return OVERFLOW_PUSH; 39 return OVERFLOW_PUSH;
34 40
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 } 143 }
138 144
139 bool DnsQueue::Validate() { 145 bool DnsQueue::Validate() {
140 return (readable_ >= 0) && 146 return (readable_ >= 0) &&
141 readable_ < buffer_sentinel_ && 147 readable_ < buffer_sentinel_ &&
142 writeable_ >= 0 && 148 writeable_ >= 0 &&
143 writeable_ < buffer_sentinel_ && 149 writeable_ < buffer_sentinel_ &&
144 '\0' == buffer_[buffer_sentinel_] && 150 '\0' == buffer_[buffer_sentinel_] &&
145 ((0 == size_) == (readable_ == writeable_)); 151 ((0 == size_) == (readable_ == writeable_));
146 } 152 }
OLDNEW
« no previous file with comments | « chrome/renderer/net/predictor_queue.h ('k') | chrome/renderer/pepper_platform_context_3d_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698