From 0b10a5b30c6496189f7ad6d0c47f50a8b0a3082c Mon Sep 17 00:00:00 2001 From: Eoin Mcloughlin Date: Wed, 7 Oct 2015 20:18:29 +0100 Subject: [PATCH] Fix crash in AudioThread::setActive If AudioThread::run() hasn't been called yet, we can dereference a null inputQueue --- src/audio/AudioThread.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/audio/AudioThread.cpp b/src/audio/AudioThread.cpp index 789e016..3ea1bfb 100644 --- a/src/audio/AudioThread.cpp +++ b/src/audio/AudioThread.cpp @@ -428,7 +428,7 @@ bool AudioThread::isActive() { void AudioThread::setActive(bool state) { AudioThreadInput *dummy; - if (state && !active) { + if (state && !active && inputQueue) { while (!inputQueue->empty()) { // flush queue inputQueue->pop(dummy); if (dummy) { @@ -438,10 +438,12 @@ void AudioThread::setActive(bool state) { deviceController[parameters.deviceId]->bindThread(this); } else if (!state && active) { deviceController[parameters.deviceId]->removeThread(this); - while (!inputQueue->empty()) { // flush queue - inputQueue->pop(dummy); - if (dummy) { - dummy->decRefCount(); + if(inputQueue) { + while (!inputQueue->empty()) { // flush queue + inputQueue->pop(dummy); + if (dummy) { + dummy->decRefCount(); + } } } }