From: Tim-Philipp Müller Date: Mon, 16 Jun 2014 19:29:56 +0000 (+0100) Subject: bufferlist: fix buffer leak in _remove() X-Git-Tag: 1.3.3~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=87fcf1e07880122709c2fd1919aca8c24df7655f;p=platform%2Fupstream%2Fgstreamer.git bufferlist: fix buffer leak in _remove() --- diff --git a/gst/gstbufferlist.c b/gst/gstbufferlist.c index 5f743a1..dca866c 100644 --- a/gst/gstbufferlist.c +++ b/gst/gstbufferlist.c @@ -281,14 +281,21 @@ gst_buffer_list_insert (GstBufferList * list, gint idx, GstBuffer * buffer) * @idx: the index * @length: the amount to remove * - * Remove @length buffers starting from @idx in @list. The following buffers are - * moved to close the gap. + * Remove @length buffers starting from @idx in @list. The following buffers + * are moved to close the gap. */ void gst_buffer_list_remove (GstBufferList * list, guint idx, guint length) { + GstBuffer *buf; + gint i; + g_return_if_fail (GST_IS_BUFFER_LIST (list)); g_return_if_fail (idx < list->array->len); + for (i = idx; i < idx + length; ++i) { + buf = g_array_index (list->array, GstBuffer *, i); + gst_buffer_unref (buf); + } g_array_remove_range (list->array, idx, length); }