From 7bdb9ce97811782864d3b54616f233c041590c7e Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Thu, 15 Sep 2016 12:52:57 -0700 Subject: [PATCH] Fix system crash due to mismatching begin/finishBroadcast() Bug 31449363 Change-Id: I514196355a2566c5e4f7f3af91fbf3c57cb67a48 --- core/java/android/os/RemoteCallbackList.java | 26 +-- .../server/pm/LauncherAppsService.java | 152 ++++++++++-------- 2 files changed, 101 insertions(+), 77 deletions(-) diff --git a/core/java/android/os/RemoteCallbackList.java b/core/java/android/os/RemoteCallbackList.java index 5849350cc49eb..3546e17698b9f 100644 --- a/core/java/android/os/RemoteCallbackList.java +++ b/core/java/android/os/RemoteCallbackList.java @@ -288,20 +288,22 @@ public class RemoteCallbackList { * @see #beginBroadcast */ public void finishBroadcast() { - if (mBroadcastCount < 0) { - throw new IllegalStateException( - "finishBroadcast() called outside of a broadcast"); - } - - Object[] active = mActiveBroadcast; - if (active != null) { - final int N = mBroadcastCount; - for (int i=0; i