From 21737d5f7abb1603d23c183425bcb28dd0c5f284 Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Fri, 20 Mar 2020 17:53:18 +0100 Subject: [PATCH] win-wasapi: Fix crash on certain devices Not all devices return PKEY_AudioEngine_DeviceFormat properties. Per MSDN, if the PROPERTYKEY referenced in key is not present in the property store, this method returns S_OK and the vt member of the structure pointed to by pv is set to VT_EMPTY. --- plugins/win-wasapi/win-wasapi.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/win-wasapi/win-wasapi.cpp b/plugins/win-wasapi/win-wasapi.cpp index 5eb139c7b..e06bb8f98 100644 --- a/plugins/win-wasapi/win-wasapi.cpp +++ b/plugins/win-wasapi/win-wasapi.cpp @@ -319,10 +319,12 @@ void WASAPISource::Initialize() resSample = store->GetValue(PKEY_AudioEngine_DeviceFormat, &prop); if (!FAILED(resSample)) { - deviceFormatProperties = - (PWAVEFORMATEX)prop.blob.pBlobData; - device_sample = std::to_string( - deviceFormatProperties->nSamplesPerSec); + if (prop.vt != VT_EMPTY && prop.blob.pBlobData) { + deviceFormatProperties = + (PWAVEFORMATEX)prop.blob.pBlobData; + device_sample = std::to_string( + deviceFormatProperties->nSamplesPerSec); + } } }