[PATCH] mf: Fix timer instance leak on error path in SetTimer().

Nikolay Sivov nsivov at codeweavers.com
Wed May 6 07:49:11 CDT 2020


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




More information about the wine-devel mailing list