summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-08-03 15:21:44 -0700
committer Wale Ogunwale <ogunwale@google.com> 2015-08-04 00:29:45 +0000
commit9a6e13c347df85348db8c0af67eeaa558fd61ee9 (patch)
tree1bb60a5ca5a6064282a0269c2bc3118ac7e66130
parent405eceb20a3f3e7a22d922fc2d0fb8283be337fa (diff)
Set broadcast nextReceiver correctly when package is disabled
When we are cleaning up broadcat receivers due to a package been disabled, it is possible to remove enough recievers to cause the nextReceiver index to be greater than the size of recievers list. We now set the nextReceiver to the size of the receiver list (which means done processing) for this case. Bug: 22874330 Change-Id: Ie151d1b5bff4c11533b3a8635fe5ee82eb21c13c
-rw-r--r--services/core/java/com/android/server/am/BroadcastRecord.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index a7e6471d58a1..1fbfd9feff8e 100644
--- a/services/core/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
@@ -240,8 +240,12 @@ final class BroadcastRecord extends Binder {
}
didSomething = true;
receivers.remove(i);
+ if (i < nextReceiver) {
+ nextReceiver--;
+ }
}
}
+ nextReceiver = Math.min(nextReceiver, receivers.size());
return didSomething;
}