static void
_gst_buffer_free (GstBuffer * buffer)
{
- GList *walk;
+ GstBufferMetaItem *walk, *next;
g_return_if_fail (buffer != NULL);
if (buffer->parent)
gst_buffer_unref (buffer->parent);
+
/* free metadata */
- for (walk = buffer->priv; walk; walk = walk->next) {
+ for (walk = buffer->priv; walk; walk = next) {
GstBufferMeta *meta = &walk->meta;
const GstBufferMetaInfo *info = meta->info;
if (info->free_func)
info->free_func (meta, buffer);
/* and free the slice */
- g_slice_free1 (ITEM_SIZE (info), meta);
+ next = walk->next;
+ g_slice_free (GstBufferMetaItem, walk);
}
g_slice_free1 (GST_MINI_OBJECT_SIZE (buffer), buffer);