From 9a6e13c347df85348db8c0af67eeaa558fd61ee9 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Mon, 3 Aug 2015 15:21:44 -0700 Subject: [PATCH] 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 --- services/core/java/com/android/server/am/BroadcastRecord.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java index a7e6471d58a1a..1fbfd9feff8e4 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; }