From 2125124755d58ca973c4f57dd14ac9be44be2de0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
Date: Thu, 31 Mar 2016 12:20:30 +0300
Subject: [PATCH] adaptivedemux: Handle find_stream_for_pad() without
 g_assert_not_reached() if no pad is found

Happens e.g. if a RECONFIGURE event is sent from downstream while we're
switching pads at this very moment. The old pad is gone and the stream has a
new pad.

https://bugzilla.gnome.org/show_bug.cgi?id=764404
---
 gst-libs/gst/adaptivedemux/gstadaptivedemux.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index dfe7ba701f5..ba29214768c 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -1092,7 +1092,6 @@ gst_adaptive_demux_find_stream_for_pad (GstAdaptiveDemux * demux, GstPad * pad)
       return stream;
     }
   }
-  g_assert_not_reached ();
   return NULL;
 }
 
@@ -1241,6 +1240,7 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
       gboolean update;
       gboolean ret = TRUE;
       GstSegment oldsegment;
+      GstAdaptiveDemuxStream *stream = NULL;
 
       GST_INFO_OBJECT (demux, "Received seek event");
 
@@ -1318,9 +1318,8 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
        * use the one that received the event as the 'leading'
        * one to do the snap seek.
        */
-      if (IS_SNAP_SEEK (flags) && demux_class->stream_seek) {
-        GstAdaptiveDemuxStream *stream =
-            gst_adaptive_demux_find_stream_for_pad (demux, pad);
+      if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream =
+              gst_adaptive_demux_find_stream_for_pad (demux, pad))) {
         GstClockTime ts;
         GstSeekFlags stream_seek_flags = flags;
 
@@ -1359,6 +1358,7 @@ gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
         GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT,
             event);
       }
+      stream = NULL;
 
       gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
           start, stop_type, stop, &update);