Commit 53214e47 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠

vorbisdec: fix leak of header buffers

handle_header_buffer() does no take ownership of
the buffer passed.

Fixes leaks in various unit tests.
parent 88618938
...@@ -358,6 +358,7 @@ header_read_error: ...@@ -358,6 +358,7 @@ header_read_error:
} }
} }
/* Does not take ownership of buffer */
static GstFlowReturn static GstFlowReturn
vorbis_dec_handle_header_buffer (GstVorbisDec * vd, GstBuffer * buffer) vorbis_dec_handle_header_buffer (GstVorbisDec * vd, GstBuffer * buffer)
{ {
...@@ -615,17 +616,20 @@ check_pending_headers (GstVorbisDec * vd) ...@@ -615,17 +616,20 @@ check_pending_headers (GstVorbisDec * vd)
/* All good, let's reset ourselves and process the headers */ /* All good, let's reset ourselves and process the headers */
vorbis_dec_reset ((GstAudioDecoder *) vd); vorbis_dec_reset ((GstAudioDecoder *) vd);
result = vorbis_dec_handle_header_buffer (vd, buffer1); result = vorbis_dec_handle_header_buffer (vd, buffer1);
gst_buffer_unref (buffer1);
if (result != GST_FLOW_OK) { if (result != GST_FLOW_OK) {
gst_buffer_unref (buffer3); gst_buffer_unref (buffer3);
gst_buffer_unref (buffer5); gst_buffer_unref (buffer5);
return result; return result;
} }
result = vorbis_dec_handle_header_buffer (vd, buffer3); result = vorbis_dec_handle_header_buffer (vd, buffer3);
gst_buffer_unref (buffer3);
if (result != GST_FLOW_OK) { if (result != GST_FLOW_OK) {
gst_buffer_unref (buffer5); gst_buffer_unref (buffer5);
return result; return result;
} }
result = vorbis_dec_handle_header_buffer (vd, buffer5); result = vorbis_dec_handle_header_buffer (vd, buffer5);
gst_buffer_unref (buffer5);
return result; return result;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment