From 2c5efb49495e31afa399a1c1ea003a9b630ba113 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Mon, 3 Sep 2018 11:22:11 +0200 Subject: Pulse: Fix crash when stop() is called while reading buffers Since reading from QIODevice can be reimplemented on user side, it can call QAudioOutput::stop() which will free resources. This will produce a crash in QPulseAudioOutput::userFeed() when it will attempt to write buffers. Task-number: QTBUG-69734 Change-Id: Ifa43ba52bb01bb40939730461615a9d182ffcc9b Reviewed-by: Christian Stromme --- src/plugins/pulseaudio/qaudiooutput_pulse.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp index 38cf54979..ea7a2be0c 100644 --- a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp +++ b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp @@ -447,7 +447,7 @@ void QPulseAudioOutput::userFeed() int audioBytesPulled = m_audioSource->read(m_audioBuffer, input); Q_ASSERT(audioBytesPulled <= input); - if (audioBytesPulled > 0) { + if (m_audioBuffer && audioBytesPulled > 0) { if (audioBytesPulled > input) { qWarning() << "QPulseAudioOutput::userFeed() - Invalid audio data size provided from user:" << audioBytesPulled << "should be less than" << input; -- cgit v1.2.3