summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2019-03-06 09:14:04 +0000
committerTim-Philipp Müller <tim@centricular.com>2019-05-01 17:45:01 +0100
commit53214e47309d116b1f6b4558bf0965d1d5e2849b (patch)
treeed1924acb2af080a4d38a63ac958877daabb970a
parent886189380f8f71324dacf3658ab1c388d79cd894 (diff)
downloadgstreamer-plugins-base-53214e47309d116b1f6b4558bf0965d1d5e2849b.tar.gz
vorbisdec: fix leak of header buffers
handle_header_buffer() does no take ownership of the buffer passed. Fixes leaks in various unit tests.
-rw-r--r--ext/vorbis/gstvorbisdec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/vorbis/gstvorbisdec.c b/ext/vorbis/gstvorbisdec.c
index 3862c620f..a0b48b71b 100644
--- a/ext/vorbis/gstvorbisdec.c
+++ b/ext/vorbis/gstvorbisdec.c
@@ -358,6 +358,7 @@ header_read_error:
}
}
+/* Does not take ownership of buffer */
static GstFlowReturn
vorbis_dec_handle_header_buffer (GstVorbisDec * vd, GstBuffer * buffer)
{
@@ -615,17 +616,20 @@ check_pending_headers (GstVorbisDec * vd)
/* All good, let's reset ourselves and process the headers */
vorbis_dec_reset ((GstAudioDecoder *) vd);
result = vorbis_dec_handle_header_buffer (vd, buffer1);
+ gst_buffer_unref (buffer1);
if (result != GST_FLOW_OK) {
gst_buffer_unref (buffer3);
gst_buffer_unref (buffer5);
return result;
}
result = vorbis_dec_handle_header_buffer (vd, buffer3);
+ gst_buffer_unref (buffer3);
if (result != GST_FLOW_OK) {
gst_buffer_unref (buffer5);
return result;
}
result = vorbis_dec_handle_header_buffer (vd, buffer5);
+ gst_buffer_unref (buffer5);
return result;