From c57500a7f459555c5426d30d31b1ed3dfd0f1d87 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Thu, 10 Jul 2014 15:52:46 +0100 Subject: [PATCH] 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 --- ext/opus/gstopusheader.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ext/opus/gstopusheader.c b/ext/opus/gstopusheader.c index b654aad325..3011716403 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