winegstreamer: Destroy BaseFilter after GST child class.

Thomas Faber thomas.faber at reactos.org
Mon Jul 21 14:05:09 CDT 2014


Critical section use after free again.
-------------- next part --------------
From 8b3ab93a5762fd6afee7db5d3a3d18f8e17c1181 Mon Sep 17 00:00:00 2001
From: Thomas Faber <thomas.faber at reactos.org>
Date: Sat, 19 Jul 2014 10:40:28 +0200
Subject: winegstreamer: Destroy BaseFilter after GST child class.

---
 dlls/winegstreamer/gstdemux.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index 3694b54..4e5f04d 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -1099,6 +1099,7 @@ static void GST_Destroy(GSTImpl *This) {
         gst_bus_set_sync_handler(This->bus, NULL, NULL);
         gst_object_unref(This->bus);
     }
+    BaseFilter_Destroy(&This->filter);
     CoTaskMemFree(This);
 }
 
@@ -1131,7 +1132,7 @@ static HRESULT WINAPI GST_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID
 
 static ULONG WINAPI GST_Release(IBaseFilter *iface) {
     GSTImpl *This = (GSTImpl *)iface;
-    ULONG refCount = BaseFilterImpl_Release(iface);
+    ULONG refCount = InterlockedDecrement(&This->filter.refCount);
 
     TRACE("(%p)->() Release from %d\n", This, refCount + 1);
 
-- 
1.9.0.msysgit.0



More information about the wine-patches mailing list