Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Thu, Feb 22, 2018 at 09:06:16AM -0600, Zebediah Figura wrote:
Source pads can be created asynchronously, so they might not be created until during the call to gst_element_set_state(). Therefore don't copy This->ppPins into a local variable.
This condition can be triggered by failing to demux a stream.
Signed-off-by: Zebediah Figura z.figura12@gmail.com
dlls/winegstreamer/gstdemux.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c index 8ccf0ad..518d995 100644 --- a/dlls/winegstreamer/gstdemux.c +++ b/dlls/winegstreamer/gstdemux.c @@ -1913,7 +1913,6 @@ static HRESULT GST_RemoveOutputPins(GSTImpl *This) { HRESULT hr; ULONG i;
GSTOutPin **ppOldPins = This->ppPins;
TRACE("(%p)\n", This); mark_wine_thread();
@@ -1927,17 +1926,17 @@ static HRESULT GST_RemoveOutputPins(GSTImpl *This) This->my_src = This->their_sink = NULL;
for (i = 0; i < This->cStreams; i++) {
hr = BaseOutputPinImpl_BreakConnect(&ppOldPins[i]->pin);
hr = BaseOutputPinImpl_BreakConnect(&This->ppPins[i]->pin); TRACE("Disconnect: %08x\n", hr);
IPin_Release(&ppOldPins[i]->pin.pin.IPin_iface);
} This->cStreams = 0;IPin_Release(&This->ppPins[i]->pin.pin.IPin_iface);
- CoTaskMemFree(This->ppPins); This->ppPins = NULL; gst_element_set_bus(This->container, NULL); gst_object_unref(This->container); This->container = NULL; BaseFilterImpl_IncrementPinVersion(&This->filter);
- CoTaskMemFree(ppOldPins); return S_OK;
}
-- 2.7.4