From 2b127601e917e24bee62bd0ff57a0c0c15fd8292 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Tue, 19 Jul 2011 09:36:10 +0200 Subject: [PATCH] mpegtsbase: Avoid double removal of streams This can happen if the PCR pid is the same as a audio/video PID. --- gst/mpegtsdemux/mpegtsbase.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index e4118b6..534b108 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -502,11 +502,18 @@ void mpegts_base_program_remove_stream (MpegTSBase * base, MpegTSBaseProgram * program, guint16 pid) { - MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base); + MpegTSBaseClass *klass; MpegTSBaseStream *stream = program->streams[pid]; GST_DEBUG ("pid:0x%04x", pid); + if (G_UNLIKELY (stream == NULL)) { + /* Can happen if the PCR PID is the same as a audio/video PID */ + GST_DEBUG ("Stream already removed"); + return; + } + + klass = GST_MPEGTS_BASE_GET_CLASS (base); /* If subclass needs it, inform it of the stream we are about to remove */ if (klass->stream_removed) -- 2.7.4