From 78596ce701fbfc1893dd1ff9edf12ac7d22f8b48 Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Wed, 19 Mar 2025 16:32:25 -0700 Subject: Prevent IndexOutOfBoundsException when trimming the battery history directory Bug: 403795900 Test: atest PowerStatsTests Flag: EXEMPT bugfix Change-Id: I493ef77f418a5caa22512c8f1d1a2bcd4c770837 --- .../java/com/android/server/power/stats/BatteryHistoryDirectory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java index 7cd9bdbc662c..b4ca7845ffee 100644 --- a/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java +++ b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java @@ -505,7 +505,9 @@ public class BatteryHistoryDirectory implements BatteryStatsHistory.BatteryHisto for (int i = 0; i < mHistoryFiles.size(); i++) { size += (int) mHistoryFiles.get(i).atomicFile.getBaseFile().length(); } - while (size > mMaxHistorySize) { + // Trim until the directory size is within the limit or there is just one most + // recent file left in the directory + while (size > mMaxHistorySize && mHistoryFiles.size() > 1) { BatteryHistoryFile oldest = mHistoryFiles.get(0); int length = (int) oldest.atomicFile.getBaseFile().length(); oldest.atomicFile.delete(); -- cgit v1.2.3-59-g8ed1b