Nikolay Sivov : mf: Fix timer instance leak on error path in SetTimer().

Alexandre Julliard julliard at winehq.org
Wed May 6 15:34:28 CDT 2020


Module: wine
Branch: master
Commit: 35242aa417cd1dd7d61e72a1c8fdabd29517367f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=35242aa417cd1dd7d61e72a1c8fdabd29517367f

Author: Nikolay Sivov <nsivov at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
 }




More information about the wine-cvs mailing list