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
This commit is contained in:
Joe LaPenna
2016-04-01 13:37:37 -07:00
parent 9d5aadd5f2
commit 33ee4bf18b

View File

@@ -905,10 +905,12 @@ public class AlarmManager {
ListenerWrapper wrapper = null;
synchronized (AlarmManager.class) {
final WeakReference<ListenerWrapper> wrapperRef;
wrapperRef = sWrappers.get(listener);
if (wrapperRef != null) {
wrapper = wrapperRef.get();
if (sWrappers != null) {
final WeakReference<ListenerWrapper> wrapperRef;
wrapperRef = sWrappers.get(listener);
if (wrapperRef != null) {
wrapper = wrapperRef.get();
}
}
}