From 33ee4bf18b51ba78f76e6f3302a21ef7550ae35c Mon Sep 17 00:00:00 2001 From: Joe LaPenna Date: Fri, 1 Apr 2016 13:37:37 -0700 Subject: Fix NPE in AlarmManager.cancel(...) If AlarmManager.cancel is called before any component has had a chance to register an alarm, sWrappers will not have been set, as it is only initialized in setImpl. When cancelling an alarm and sWrappers does not exist, log a warning and return early. BUG: 27972657 Change-Id: Ied10719ba1d154f97eecfc32f429fd9ce39bf747 --- core/java/android/app/AlarmManager.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java index cb2130c4528e..e4fff9dc8a8c 100644 --- a/core/java/android/app/AlarmManager.java +++ b/core/java/android/app/AlarmManager.java @@ -905,10 +905,12 @@ public class AlarmManager { ListenerWrapper wrapper = null; synchronized (AlarmManager.class) { - final WeakReference wrapperRef; - wrapperRef = sWrappers.get(listener); - if (wrapperRef != null) { - wrapper = wrapperRef.get(); + if (sWrappers != null) { + final WeakReference wrapperRef; + wrapperRef = sWrappers.get(listener); + if (wrapperRef != null) { + wrapper = wrapperRef.get(); + } } } -- cgit v1.2.3-59-g8ed1b