Nikolay Sivov (@nsivov) commented about dlls/mmdevapi/client.c:
return E_INVALIDARG; }
- if (mode == AUDCLNT_SHAREMODE_SHARED) {
WAVEFORMATEX *mix_fmt;
HRESULT hr;
if (FAILED(hr = IAudioClient3_GetMixFormat(&client->IAudioClient3_iface, &mix_fmt)))
return hr;
if (fmt->nChannels != mix_fmt->nChannels || fmt->nSamplesPerSec != mix_fmt->nSamplesPerSec)
return AUDCLNT_E_UNSUPPORTED_FORMAT;
CoTaskMemFree(mix_fmt);
It should free on error path too.