Module: wine Branch: master Commit: 2238658e2f87506c9ccb67de0376f3e3920550db URL: https://gitlab.winehq.org/wine/wine/-/commit/2238658e2f87506c9ccb67de0376f3e...
Author: Tim Clem tclem@codeweavers.com Date: Thu Jul 13 14:21:40 2023 -0700
wmp: Release filter graph and interfaces if WMPControls::play fails.
---
dlls/wmp/player.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
diff --git a/dlls/wmp/player.c b/dlls/wmp/player.c index 254d04d23f8..583f5847907 100644 --- a/dlls/wmp/player.c +++ b/dlls/wmp/player.c @@ -1509,6 +1509,35 @@ static HRESULT WINAPI WMPControls_play(IWMPControls *iface) hres = IGraphBuilder_QueryInterface(This->filter_graph, &IID_IBasicAudio, (void**)&This->basic_audio); if (SUCCEEDED(hres)) hres = IWMPSettings_put_volume(&This->IWMPSettings_iface, This->volume); + + if (FAILED(hres)) + { + if (This->filter_graph) + { + IGraphBuilder_Release(This->filter_graph); + This->filter_graph = NULL; + } + if (This->media_control) + { + IMediaControl_Release(This->media_control); + This->media_control = NULL; + } + if (This->media_seeking) + { + IMediaSeeking_Release(This->media_seeking); + This->media_seeking = NULL; + } + if (This->media_event) + { + IMediaEvent_Release(This->media_event); + This->media_event = NULL; + } + if (This->basic_audio) + { + IBasicAudio_Release(This->basic_audio); + This->basic_audio = NULL; + } + } }
update_state(This, DISPID_WMPCOREEVENT_PLAYSTATECHANGE, wmppsTransitioning);