summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJun Xie <jun.xie@samsung.com>2017-11-09 12:36:44 +0800
committerSebastian Dröge <sebastian@centricular.com>2017-11-20 10:31:52 +0200
commit6f8b80eeb135053386db5d2473f3e990843f7607 (patch)
tree5414c7a0244d7ab3ba71a363fdb4c538a0602e7e
parenta45b49cbd52055b567749572ef0a098dad3e5143 (diff)
downloadgstreamer-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.c8
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);