From dfd9ad4fd34014f9b772e150d389b9b9f9e5f4ae Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Tue, 23 May 2023 00:19:33 +0000 Subject: [PATCH] Add null checking when deleting hotword detectors Nullpointer exception could be thrown when the system does not specify VisualQueryDetector and is trying to shutdown all hotword detectors. This can lead to the destroy of hotword detectors to fail which further leads to app crash when a second detector is created and further cause memory leak. Bug: 283264602 Test: atest CtsVoiceInteractionTestCases Change-Id: If1a6b11ccfae6e3002e5587d0eb7de80943583c3 --- core/java/android/service/voice/VoiceInteractionService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index 4b761c1058034..ab9ae0acc01ed 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -1066,7 +1066,9 @@ public class VoiceInteractionService extends Service { synchronized (mLock) { mActiveDetectors.forEach(detector -> { try { - if (detector != mActiveVisualQueryDetector.getInitializationDelegate() + // Skip destroying VisualQueryDetector if HotwordDetectors are created + if (!(mActiveVisualQueryDetector != null + && detector == mActiveVisualQueryDetector.getInitializationDelegate()) || shouldShutDownVisualQueryDetector) { detector.destroy(); }