streamsynchronizer: avoid crashing when operating on released pad

This commit is contained in:
Mark Nauwelaerts 2012-01-03 11:02:17 +01:00
parent 76cc8b8f2a
commit af28016d0a

View file

@ -94,11 +94,16 @@ gst_stream_get_other_pad (GstStream * stream, GstPad * pad)
static GstPad *
gst_stream_get_other_pad_from_pad (GstPad * pad)
{
GstStreamSynchronizer *self =
GST_STREAM_SYNCHRONIZER (gst_pad_get_parent (pad));
GstObject *parent = gst_pad_get_parent (pad);
GstStreamSynchronizer *self;
GstStream *stream;
GstPad *opad = NULL;
/* released pad does not have parent anymore */
if (!G_LIKELY (parent))
goto exit;
self = GST_STREAM_SYNCHRONIZER (parent);
GST_STREAM_SYNCHRONIZER_LOCK (self);
stream = gst_pad_get_element_private (pad);
if (!stream)
@ -110,6 +115,7 @@ out:
GST_STREAM_SYNCHRONIZER_UNLOCK (self);
gst_object_unref (self);
exit:
if (!opad)
GST_WARNING_OBJECT (pad, "Trying to get other pad after releasing");