diff options
author | Jun Xie <jun.xie@samsung.com> | 2017-11-09 12:36:44 +0800 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2017-11-20 10:31:52 +0200 |
commit | 6f8b80eeb135053386db5d2473f3e990843f7607 (patch) | |
tree | 5414c7a0244d7ab3ba71a363fdb4c538a0602e7e | |
parent | a45b49cbd52055b567749572ef0a098dad3e5143 (diff) | |
download | gstreamer-plugins-bad-6f8b80eeb135053386db5d2473f3e990843f7607.tar.gz |
hlsdemux: Fix memory leak caused by double buffer map
https://bugzilla.gnome.org/show_bug.cgi?id=789999
-rw-r--r-- | ext/hls/gsthlsdemux.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c index 2d075af00..8c6f221d0 100644 --- a/ext/hls/gsthlsdemux.c +++ b/ext/hls/gsthlsdemux.c @@ -802,19 +802,17 @@ gst_hls_demux_handle_buffer (GstAdaptiveDemux * demux, { GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream); // FIXME: pass HlsStream into function GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux); - GstMapInfo info; GstClockTime first_pcr, last_pcr; GstTagList *tags; if (buffer == NULL) return GST_FLOW_OK; - gst_buffer_map (buffer, &info, GST_MAP_READ); - if (G_UNLIKELY (hls_stream->do_typefind)) { GstCaps *caps = NULL; guint buffer_size; GstTypeFindProbability prob = GST_TYPE_FIND_NONE; + GstMapInfo info; if (hls_stream->pending_typefind_buffer) buffer = gst_buffer_append (hls_stream->pending_typefind_buffer, buffer); @@ -859,11 +857,11 @@ gst_hls_demux_handle_buffer (GstAdaptiveDemux * demux, gst_adaptive_demux_stream_set_caps (stream, caps); hls_stream->do_typefind = FALSE; + + gst_buffer_unmap (buffer, &info); } g_assert (hls_stream->pending_typefind_buffer == NULL); - gst_buffer_unmap (buffer, &info); - // Accumulate this buffer if (hls_stream->pending_pcr_buffer) { buffer = gst_buffer_append (hls_stream->pending_pcr_buffer, buffer); |