OSDN Git Service

Avoid ClassCastException in ArrayMap.
authorDan Sandler <dsandler@android.com>
Fri, 14 Apr 2017 00:21:12 +0000 (20:21 -0400)
committerDan Sandler <dsandler@android.com>
Wed, 26 Apr 2017 18:18:15 +0000 (14:18 -0400)
commitd0ecb1ed10725a6b2c84d64e212984cd4c0d26d2
tree1733d9f440b2364e6a47a26ef3a59064f131ba61
parent35eb324bf17e63a2e28c08484313d195e3f1e7f6
Avoid ClassCastException in ArrayMap.

Only happens if you're put()ing and clear()ing the map from
different threads, and Dianne told you not to do that.

In addition to avoiding the cache poisoning that results
from concurrent access, ArrayMap now attempts to throw
ConcurrentModificationException if clear() or
ensureCapacity() or put() notices you've modified the map
elsewhere.

Bug: 32994281
Test: runtest -x frameworks/base/core/tests/coretests/src/android/util/ArrayMapTest.java
      runtest -x cts/tests/tests/util/src/android/util/cts/ArrayMapTest.java
Change-Id: Ia75970aa9e2b2b65692179f51243584b9773797f
core/java/android/util/ArrayMap.java
core/tests/coretests/src/android/util/ArrayMapTest.java [new file with mode: 0644]