From f02069cdf4456be8e09d073e8b8c5699ad11b6a9 Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Tue, 4 Apr 2023 11:12:14 -0700 Subject: [PATCH] [SettingsProvider] fix configs cache update The bug is that after remove(), size() changed during for loop, leaving some obsolete keys in the cache. BUG: 276881870 Test: atest android.deviceconfig.cts.DeviceConfigApiTests Change-Id: I9aa5152caa454c4923429168469ae3a13b05b9ae --- core/java/android/provider/Settings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index c473d3f818239..16aca9131fd12 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -3431,7 +3431,7 @@ public final class Settings { + " type:" + mUri.getPath() + " in package:" + cr.getPackageName()); } - for (int i = 0; i < mValues.size(); ++i) { + for (int i = mValues.size() - 1; i >= 0; i--) { String key = mValues.keyAt(i); if (key.startsWith(prefix)) { mValues.remove(key);