diff options
author | Romain Guy <romainguy@google.com> | 2011-06-16 16:14:06 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-06-16 16:14:06 -0700 |
commit | bec9be2f513617a35988a1cd225afd8f1f513867 (patch) | |
tree | bf6ea7b650aafd54759295f8273852a8e5723209 | |
parent | 29ddc3bc2730fefdd51ac54f9838c67742a270ed (diff) | |
parent | 5d5d1ff2d5daadec48c6c95e86d6d644390c02e6 (diff) | |
download | frameworks_base-bec9be2f513617a35988a1cd225afd8f1f513867.zip frameworks_base-bec9be2f513617a35988a1cd225afd8f1f513867.tar.gz frameworks_base-bec9be2f513617a35988a1cd225afd8f1f513867.tar.bz2 |
Merge "Prevent TweetDeck from crashing."
-rw-r--r-- | core/java/android/util/FinitePool.java | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/core/java/android/util/FinitePool.java b/core/java/android/util/FinitePool.java index 4ae21ad..b30f2bf 100644 --- a/core/java/android/util/FinitePool.java +++ b/core/java/android/util/FinitePool.java @@ -20,6 +20,8 @@ package android.util; * @hide */ class FinitePool<T extends Poolable<T>> implements Pool<T> { + private static final String LOG_TAG = "FinitePool"; + /** * Factory used to create new pool objects */ @@ -77,15 +79,16 @@ class FinitePool<T extends Poolable<T>> implements Pool<T> { } public void release(T element) { - if (element.isPooled()) { - throw new IllegalArgumentException("Element already in the pool."); - } - if (mInfinite || mPoolCount < mLimit) { - mPoolCount++; - element.setNextPoolable(mRoot); - element.setPooled(true); - mRoot = element; + if (!element.isPooled()) { + if (mInfinite || mPoolCount < mLimit) { + mPoolCount++; + element.setNextPoolable(mRoot); + element.setPooled(true); + mRoot = element; + } + mManager.onReleased(element); + } else { + Log.w(LOG_TAG, "Element is already in pool: " + element); } - mManager.onReleased(element); } } |