summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip.withnall@collabora.co.uk>2014-07-10 15:52:46 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-07-11 09:05:32 +0200
commitc57500a7f459555c5426d30d31b1ed3dfd0f1d87 (patch)
tree92bab89a34304229ae4a6c24a2f7ba1b786a49e3
parentba7d57c1549795956adef29b9e916e07d4b59bd2 (diff)
downloadgstreamer-plugins-bad-c57500a7f459555c5426d30d31b1ed3dfd0f1d87.tar.gz
opus: Fix a double-unref in the Opus header code
The headers were never getting reffed when being added to the headers list, which is later unreffed-and-freed by the caller (e.g. gst_opus_parse_parse_frame()). https://bugzilla.gnome.org/show_bug.cgi?id=733013
-rw-r--r--ext/opus/gstopusheader.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ext/opus/gstopusheader.c b/ext/opus/gstopusheader.c
index b654aad32..301171640 100644
--- a/ext/opus/gstopusheader.c
+++ b/ext/opus/gstopusheader.c
@@ -190,8 +190,8 @@ gst_opus_header_create_caps_from_headers (GstCaps ** caps, GSList ** headers,
"multistream", G_TYPE_BOOLEAN, multistream, NULL);
*caps = _gst_caps_set_buffer_array (*caps, "streamheader", buf1, buf2, NULL);
- *headers = g_slist_prepend (*headers, buf2);
- *headers = g_slist_prepend (*headers, buf1);
+ *headers = g_slist_prepend (*headers, gst_buffer_ref (buf2));
+ *headers = g_slist_prepend (*headers, gst_buffer_ref (buf1));
}
void
@@ -218,6 +218,9 @@ gst_opus_header_create_caps (GstCaps ** caps, GSList ** headers, gint nchannels,
buf2 = gst_opus_enc_create_metadata_buffer (tags);
gst_opus_header_create_caps_from_headers (caps, headers, buf1, buf2);
+
+ gst_buffer_unref (buf2);
+ gst_buffer_unref (buf1);
}
gboolean