summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-08-11 21:29:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-08-11 21:29:12 +0000
commit3a11a2df7dd3eb7802af2aeeb87bfda70d3c5d08 (patch)
treec1e7d19c3b4fb4c7d5982cb2fb7e28ad36b12ecd
parent688a65880d9ae2337861f6043defb60d5da5cf26 (diff)
parent92cffb3fd8911199edddf8136c7aa76edb952fbb (diff)
Merge "Fix for out of bounds exception in CachedAppOptimizer"
-rw-r--r--services/core/java/com/android/server/am/CachedAppOptimizer.java14
1 files changed, 3 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 45265ac0c8f3..363c9d0a963a 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -1392,25 +1392,17 @@ public final class CachedAppOptimizer {
void cancelAllCompactions(CancelCompactReason reason) {
synchronized (mProcLock) {
- int size = mPendingCompactionProcesses.size();
- ProcessRecord record;
- for (int i=0; i < size; ++i) {
- record = mPendingCompactionProcesses.get(i);
- cancelCompactionForProcess(record, reason);
- // The process record is kept alive after compactions are cleared,
- // so make sure to reset the compaction state to avoid skipping any future
- // compactions due to a stale value here.
- record.mOptRecord.setHasPendingCompact(false);
+ while(!mPendingCompactionProcesses.isEmpty()) {
+ cancelCompactionForProcess(mPendingCompactionProcesses.get(0), reason);
}
mPendingCompactionProcesses.clear();
}
- cancelCompaction();
}
@GuardedBy("mProcLock")
void cancelCompactionForProcess(ProcessRecord app, CancelCompactReason cancelReason) {
boolean cancelled = false;
- if (!mPendingCompactionProcesses.isEmpty() && mPendingCompactionProcesses.contains(app)) {
+ if (mPendingCompactionProcesses.contains(app)) {
app.mOptRecord.setHasPendingCompact(false);
mPendingCompactionProcesses.remove(app);
cancelled = true;