Module: wine Branch: master Commit: 35242aa417cd1dd7d61e72a1c8fdabd29517367f URL: https://source.winehq.org/git/wine.git/?a=commit;h=35242aa417cd1dd7d61e72a1c... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed May 6 15:49:11 2020 +0300 mf: Fix timer instance leak on error path in SetTimer(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/session.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/mf/session.c b/dlls/mf/session.c index d6b881218b..25832afdbb 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -4093,15 +4093,19 @@ static HRESULT WINAPI present_clock_timer_SetTimer(IMFTimer *iface, DWORD flags, hr = MF_S_CLOCK_STOPPED; if (SUCCEEDED(hr)) + { list_add_tail(&clock->timers, &clock_timer->entry); + if (cancel_key) + { + *cancel_key = &clock_timer->IUnknown_iface; + IUnknown_AddRef(*cancel_key); + } + } LeaveCriticalSection(&clock->cs); - if (SUCCEEDED(hr) && cancel_key) - { - *cancel_key = &clock_timer->IUnknown_iface; - IUnknown_AddRef(*cancel_key); - } + if (FAILED(hr)) + IUnknown_Release(&clock_timer->IUnknown_iface); return hr; }