Use a stack-allocated GQueue to assemble our GList.
GList *
gst_adapter_take_list (GstAdapter * adapter, guint nbytes)
{
- GList *result = NULL, *tail = NULL;
+ GQueue queue = G_QUEUE_INIT;
GstBuffer *cur;
guint hsize, skip;
cur = gst_adapter_take_buffer (adapter, hsize);
- if (result == NULL) {
- result = tail = g_list_append (result, cur);
- } else {
- tail = g_list_append (tail, cur);
- tail = g_list_next (tail);
- }
+ g_queue_push_tail (&queue, cur);
+
nbytes -= hsize;
}
- return result;
+ return queue.head;
}
/**