From 9e40da90263ec519857a5cd279af21a70bf43244 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 25 Feb 2020 13:00:04 -0500 Subject: [PATCH] Iterate over a copy in QSTileHost#changeTiles Prevent OOB exception when iterating over the list of previous tiles, as it could be modified. As we just need to find out what changed, there's no need to add extra locking. Test: no test Fixes: 150212857 Change-Id: I129660a81771acba3d6a5da58fb14ed19659d4ea --- .../SystemUI/src/com/android/systemui/qs/QSTileHost.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 938f9dbde6ff5..1648949431c1c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -326,10 +326,10 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D } public void changeTiles(List previousTiles, List newTiles) { - final int NP = previousTiles.size(); - final int NA = newTiles.size(); + final List copy = new ArrayList<>(previousTiles); + final int NP = copy.size(); for (int i = 0; i < NP; i++) { - String tileSpec = previousTiles.get(i); + String tileSpec = copy.get(i); if (!tileSpec.startsWith(CustomTile.PREFIX)) continue; if (!newTiles.contains(tileSpec)) { ComponentName component = CustomTile.getComponentFromSpec(tileSpec);