From 640918f9117faa5fa6fdb9fe0947267de51cced9 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 28 Apr 2016 14:54:35 -0700 Subject: [PATCH] Check if records is inited before removing items The record might already be removed and the records array set to null when the binder dies, hence handle the scenario. Bug: 28512952 Change-Id: Id21b03b6d14d1dc8cb792ee4ec0519287a289a33 --- .../java/com/android/server/print/UserState.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/print/java/com/android/server/print/UserState.java b/services/print/java/com/android/server/print/UserState.java index 71821613c889f..7a3ebf422a8a1 100644 --- a/services/print/java/com/android/server/print/UserState.java +++ b/services/print/java/com/android/server/print/UserState.java @@ -555,7 +555,11 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks, new PrintJobStateChangeListenerRecord(listener, appId) { @Override public void onBinderDied() { - mPrintJobStateChangeListenerRecords.remove(this); + synchronized (mLock) { + if (mPrintJobStateChangeListenerRecords != null) { + mPrintJobStateChangeListenerRecords.remove(this); + } + } } }); } @@ -639,7 +643,11 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks, new ListenerRecord(listener) { @Override public void onBinderDied() { - mPrintServiceRecommendationsChangeListenerRecords.remove(this); + synchronized (mLock) { + if (mPrintServiceRecommendationsChangeListenerRecords != null) { + mPrintServiceRecommendationsChangeListenerRecords.remove(this); + } + } } }); }