Akihiro Sagawa : winegstreamer: Fix reference leaks.

Alexandre Julliard julliard at winehq.org
Tue Dec 6 16:27:43 CST 2016


Module: wine
Branch: master
Commit: 38586dcf48bf38c136ea315fd9d83a1be56483b1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=38586dcf48bf38c136ea315fd9d83a1be56483b1

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Mon Dec  5 00:37:14 2016 +0900

winegstreamer: Fix reference leaks.

Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/quartz/tests/filtergraph.c | 7 +++++++
 dlls/winegstreamer/gstdemux.c   | 4 ++++
 2 files changed, 11 insertions(+)

diff --git a/dlls/quartz/tests/filtergraph.c b/dlls/quartz/tests/filtergraph.c
index 3077b38..9db1c72 100644
--- a/dlls/quartz/tests/filtergraph.c
+++ b/dlls/quartz/tests/filtergraph.c
@@ -366,6 +366,13 @@ static void test_render_run(const WCHAR *file)
     }
 
     releasefiltergraph();
+
+    if (h != INVALID_HANDLE_VALUE) {
+        /* check reference leaks */
+        h = CreateFileW(file, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
+        ok(h != INVALID_HANDLE_VALUE, "CreateFile failed: err=%d\n", GetLastError());
+        CloseHandle(h);
+    }
 }
 
 static void test_graph_builder(void)
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 03d8d5b..c33ed9e 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1951,6 +1951,9 @@ static ULONG WINAPI GSTInPin_Release(IPin *iface)
         if (This->pAlloc)
             IMemAllocator_Release(This->pAlloc);
         This->pAlloc = NULL;
+        if (This->pReader)
+            IAsyncReader_Release(This->pReader);
+        This->pReader = NULL;
         This->pin.IPin_iface.lpVtbl = NULL;
         return 0;
     } else
@@ -2048,6 +2051,7 @@ static HRESULT WINAPI GSTInPin_Disconnect(IPin *iface)
         if (SUCCEEDED(hr) && state == State_Stopped) {
             IMemAllocator_Decommit(This->pAlloc);
             IPin_Disconnect(This->pin.pConnectedTo);
+            IPin_Release(This->pin.pConnectedTo);
             This->pin.pConnectedTo = NULL;
             hr = GST_RemoveOutputPins(Parser);
         } else




More information about the wine-cvs mailing list