From: Nicolas Huet Date: Tue, 10 Nov 2015 15:32:37 +0000 (+0100) Subject: tsdemux: fix pending buffers leak when flushing X-Git-Tag: 1.19.3~507^2~7597 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21a025c2a162d7ff8f99e69d61edfa19771939cb;p=platform%2Fupstream%2Fgstreamer.git tsdemux: fix pending buffers leak when flushing https://bugzilla.gnome.org/show_bug.cgi?id=757895 --- diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 085b83e..7deb638 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1729,6 +1729,20 @@ gst_ts_demux_stream_flush (TSDemuxStream * stream, GstTSDemux * tsdemux, stream->gap_ref_buffers = 0; stream->gap_ref_pts = GST_CLOCK_TIME_NONE; stream->continuity_counter = CONTINUITY_UNSET; + + if (G_UNLIKELY (stream->pending)) { + GList *tmp; + + GST_DEBUG ("clearing pending %p", stream); + for (tmp = stream->pending; tmp; tmp = tmp->next) { + PendingBuffer *pend = (PendingBuffer *) tmp->data; + gst_buffer_unref (pend->buffer); + g_slice_free (PendingBuffer, pend); + } + g_list_free (stream->pending); + stream->pending = NULL; + } + if (hard) { stream->first_pts = GST_CLOCK_TIME_NONE; stream->need_newsegment = TRUE;