Commit 6c50c182 authored by Andrew Eikum's avatar Andrew Eikum Committed by Michael Stefaniuc

xaudio2: Protect access to source voice during creation (Coverity).

Signed-off-by: 's avatarAndrew Eikum <aeikum@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org> (cherry picked from commit 2c82e8b4) Signed-off-by: 's avatarMichael Stefaniuc <mstefani@winehq.org>
parent 76016117
......@@ -1364,8 +1364,10 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
EnterCriticalSection(&This->lock);
LIST_FOR_EACH_ENTRY(src, &This->source_voices, XA2SourceImpl, entry){
EnterCriticalSection(&src->lock);
if(!src->in_use)
break;
LeaveCriticalSection(&src->lock);
}
if(&src->entry == &This->source_voices){
......@@ -1386,6 +1388,8 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
src->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": XA2SourceImpl.lock");
src->xa2 = This;
EnterCriticalSection(&src->lock);
}
src->in_use = TRUE;
......@@ -1398,6 +1402,7 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
src->al_fmt = get_al_format(pSourceFormat);
if(!src->al_fmt){
src->in_use = FALSE;
LeaveCriticalSection(&src->lock);
WARN("OpenAL can't convert this format!\n");
return AUDCLNT_E_UNSUPPORTED_FORMAT;
}
......@@ -1410,6 +1415,7 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
if(FAILED(hr)){
HeapFree(GetProcessHeap(), 0, src->fmt);
src->in_use = FALSE;
LeaveCriticalSection(&src->lock);
return hr;
}
......@@ -1420,6 +1426,7 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
ERR_(winediag)("OpenAL ran out of sources, consider increasing its source limit.\n");
HeapFree(GetProcessHeap(), 0, src->fmt);
src->in_use = FALSE;
LeaveCriticalSection(&src->lock);
return E_OUTOFMEMORY;
}
......@@ -1427,6 +1434,8 @@ static HRESULT WINAPI IXAudio2Impl_CreateSourceVoice(IXAudio2 *iface,
alSourcePlay(src->al_src);
LeaveCriticalSection(&src->lock);
#if XAUDIO2_VER == 0
*ppSourceVoice = (IXAudio2SourceVoice*)&src->IXAudio20SourceVoice_iface;
#elif XAUDIO2_VER <= 3
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment