Fix a ConcurrentModificationException when dumping resources
Since the sResourcesHistory set is synchronized, an attemp to modify the set will block while the forEach() method is running in the rare case resources are being dumped. With a normal for loop, modifying the set while in the loop results in a ConcurrentModificationException. Fixes: 219609463 Test: Manual Change-Id: I9b7bb965aa390e5dec696be07599f777c807c1e3
This commit is contained in:
@@ -2674,9 +2674,8 @@ public class Resources {
|
||||
// Putting into a map keyed on the apk assets to deduplicate resources that are different
|
||||
// objects but ultimately represent the same assets
|
||||
Map<List<ApkAssets>, Resources> history = new ArrayMap<>();
|
||||
for (Resources r : sResourcesHistory) {
|
||||
history.put(Arrays.asList(r.mResourcesImpl.mAssets.getApkAssets()), r);
|
||||
}
|
||||
sResourcesHistory.forEach(
|
||||
r -> history.put(Arrays.asList(r.mResourcesImpl.mAssets.getApkAssets()), r));
|
||||
int i = 0;
|
||||
for (Resources r : history.values()) {
|
||||
if (r != null) {
|
||||
|
||||
Reference in New Issue
Block a user