mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
gstfunnel: avoid access of freed pad
Save the value of the pad's got_eos in gst_funnel_release_pad, before calling gst_element_remove_pad. This is because gst_element_remove_pad may free the pad. https://bugzilla.gnome.org/show_bug.cgi?id=678017
This commit is contained in:
parent
c65eebe28c
commit
066b515985
1 changed files with 4 additions and 1 deletions
|
@ -229,16 +229,19 @@ gst_funnel_release_pad (GstElement * element, GstPad * pad)
|
|||
{
|
||||
GstFunnel *funnel = GST_FUNNEL (element);
|
||||
GstFunnelPad *fpad = GST_FUNNEL_PAD_CAST (pad);
|
||||
gboolean got_eos;
|
||||
gboolean send_eos = FALSE;
|
||||
|
||||
GST_DEBUG_OBJECT (funnel, "releasing pad");
|
||||
|
||||
gst_pad_set_active (pad, FALSE);
|
||||
|
||||
got_eos = fpad->got_eos;
|
||||
|
||||
gst_element_remove_pad (GST_ELEMENT_CAST (funnel), pad);
|
||||
|
||||
GST_OBJECT_LOCK (funnel);
|
||||
if (!fpad->got_eos && gst_funnel_all_sinkpads_eos_unlocked (funnel)) {
|
||||
if (!got_eos && gst_funnel_all_sinkpads_eos_unlocked (funnel)) {
|
||||
GST_DEBUG_OBJECT (funnel, "Pad removed. All others are EOS. Sending EOS");
|
||||
send_eos = TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue