diff options
author | Jeff Brown <jeffbrown@google.com> | 2011-07-13 22:22:02 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2011-07-14 04:11:22 -0700 |
commit | 11bf79d6e3542e40ebd212b0f5d7cb3370f3068d (patch) | |
tree | bca3c01bec346cc3c9dc6ab1ad45a8cb73062ef6 /libs/utils | |
parent | 9302c8796fc4dcda08d4bd1e11733848fd4fafaf (diff) | |
download | frameworks_base-11bf79d6e3542e40ebd212b0f5d7cb3370f3068d.zip frameworks_base-11bf79d6e3542e40ebd212b0f5d7cb3370f3068d.tar.gz frameworks_base-11bf79d6e3542e40ebd212b0f5d7cb3370f3068d.tar.bz2 |
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
Diffstat (limited to 'libs/utils')
-rw-r--r-- | libs/utils/VectorImpl.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libs/utils/VectorImpl.cpp b/libs/utils/VectorImpl.cpp index 87ae3d5..0701a51 100644 --- a/libs/utils/VectorImpl.cpp +++ b/libs/utils/VectorImpl.cpp @@ -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()) { |