Replace Vector _grow/_shrink checks with assert.
On review of the code, _grow and _shrink are checking for conditions that cannot happen and that don't even really make sense. For example, if _shrink is called with where + amount > mCount then this is really bad, however the check only considered the case when where >= mCount and then it would arbitrarily choose a new value for where. Huh? As it happens, the callers are correctly validating the arguments before passing them down to these methods so we can get rid of this code. Change-Id: I921852dba8997065bb0e9cac733e82028d14afcd
This commit is contained in:
@@ -347,9 +347,10 @@ void* VectorImpl::_grow(size_t where, size_t amount)
|
||||
// LOGV("_grow(this=%p, where=%d, amount=%d) count=%d, capacity=%d",
|
||||
// this, (int)where, (int)amount, (int)mCount, (int)capacity());
|
||||
|
||||
if (where > mCount)
|
||||
where = mCount;
|
||||
|
||||
LOG_ASSERT(where <= mCount,
|
||||
"[%p] _grow: where=%d, amount=%d, count=%d",
|
||||
this, (int)where, (int)amount, (int)mCount); // caller already checked
|
||||
|
||||
const size_t new_size = mCount + amount;
|
||||
if (capacity() < new_size) {
|
||||
const size_t new_capacity = max(kMinVectorCapacity, ((new_size*3)+1)/2);
|
||||
@@ -400,8 +401,9 @@ void VectorImpl::_shrink(size_t where, size_t amount)
|
||||
// LOGV("_shrink(this=%p, where=%d, amount=%d) count=%d, capacity=%d",
|
||||
// this, (int)where, (int)amount, (int)mCount, (int)capacity());
|
||||
|
||||
if (where >= mCount)
|
||||
where = mCount - amount;
|
||||
LOG_ASSERT(where + amount <= mCount,
|
||||
"[%p] _shrink: where=%d, amount=%d, count=%d",
|
||||
this, (int)where, (int)amount, (int)mCount); // caller already checked
|
||||
|
||||
const size_t new_size = mCount - amount;
|
||||
if (new_size*3 < capacity()) {
|
||||
|
||||
Reference in New Issue
Block a user