summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2011-07-13 22:22:02 -0700
committerJeff Brown <jeffbrown@google.com>2011-07-14 04:11:22 -0700
commit11bf79d6e3542e40ebd212b0f5d7cb3370f3068d (patch)
treebca3c01bec346cc3c9dc6ab1ad45a8cb73062ef6 /libs
parent9302c8796fc4dcda08d4bd1e11733848fd4fafaf (diff)
downloadframeworks_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')
-rw-r--r--libs/utils/VectorImpl.cpp12
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()) {