From a621c53dd9103c3d41cb16763f7b7dba372b67a6 Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Mon, 13 Nov 2017 09:36:41 +0100 Subject: Fix crash when no supported formats are returned If waveInGetDevCaps or waveOutGetDevCaps returns MMSYSERR_NOERROR it does not mean that there are supported formats in the dwFormats field. Task-number: QTBUG-54242 Change-Id: I767ccc9570681685a27abd979ba9754034058e6f Reviewed-by: Christian Stromme --- src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp index 83e9ccfc8..c054c0f76 100644 --- a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp +++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp @@ -238,21 +238,16 @@ void QWindowsAudioDeviceInfo::updateLists() if (!sizez.isEmpty()) return; - bool hasCaps = false; DWORD fmt = 0; if(mode == QAudio::AudioOutput) { WAVEOUTCAPS woc; - if (waveOutGetDevCaps(devId, &woc, sizeof(WAVEOUTCAPS)) == MMSYSERR_NOERROR) { - hasCaps = true; + if (waveOutGetDevCaps(devId, &woc, sizeof(WAVEOUTCAPS)) == MMSYSERR_NOERROR) fmt = woc.dwFormats; - } } else { WAVEINCAPS woc; - if (waveInGetDevCaps(devId, &woc, sizeof(WAVEINCAPS)) == MMSYSERR_NOERROR) { - hasCaps = true; + if (waveInGetDevCaps(devId, &woc, sizeof(WAVEINCAPS)) == MMSYSERR_NOERROR) fmt = woc.dwFormats; - } } sizez.clear(); @@ -260,7 +255,7 @@ void QWindowsAudioDeviceInfo::updateLists() channelz.clear(); typez.clear(); - if (hasCaps) { + if (fmt) { // Check sample size if ((fmt & WAVE_FORMAT_1M08) || (fmt & WAVE_FORMAT_1S08) -- cgit v1.2.3