From 28b239711597981ecb79b12db1a69f49c1033cbd Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Wed, 29 Jul 2015 16:01:50 -0700 Subject: [PATCH] Fixed out of bounds exception while handling app crash The current stack we are proccessing can be deleted as part of the clean-up process, so the size of the stack list is reduced by one. Bug: 22822743 Change-Id: I6a6af5d8d811e231f345f01dd2aa4a61510c8d2b --- .../com/android/server/am/ActivityStackSupervisor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 05c58d75848e1..0be2f6f4ec617 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3205,10 +3205,10 @@ public final class ActivityStackSupervisor implements DisplayListener { void handleAppCrashLocked(ProcessRecord app) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; - final int numStacks = stacks.size(); - for (int stackNdx = 0; stackNdx < numStacks; ++stackNdx) { - final ActivityStack stack = stacks.get(stackNdx); - stack.handleAppCrashLocked(app); + int stackNdx = stacks.size() - 1; + while (stackNdx >= 0) { + stacks.get(stackNdx).handleAppCrashLocked(app); + stackNdx--; } } }