diff options
author | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2018-09-03 11:22:11 +0200 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2018-09-13 13:34:44 +0000 |
commit | 2c5efb49495e31afa399a1c1ea003a9b630ba113 (patch) | |
tree | a0693f62cd3f256c0a3dfc85fede82e0f0a7ad37 /src | |
parent | e9aa969c8cc2226081326e8e1d01f0044fcd7411 (diff) |
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 <christian.stromme@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/pulseaudio/qaudiooutput_pulse.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
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; |