From 4e7cf4c5c1c70f5cfc17f50e4d69ef0058b2e597 Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Sat, 14 Apr 2012 03:27:29 +0200 Subject: [PATCH] Remove skipped part of buffer when mapping the adapter Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674085 --- libs/gst/base/gstadapter.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c index 3342536860..ff8108078e 100644 --- a/libs/gst/base/gstadapter.c +++ b/libs/gst/base/gstadapter.c @@ -361,11 +361,13 @@ gst_adapter_try_to_merge_up (GstAdapter * adapter, gsize size) head = g->data; g = g_slist_next (g); - /* How large do we want our head buffer? The requested size, plus whatever's - * been skipped already */ - size += adapter->skip; hsize = gst_buffer_get_size (head); + /* Remove skipped part from the buffer (otherwise the buffer might grow indefinitely) */ + gst_buffer_resize (head, adapter->skip, hsize - adapter->skip); + hsize -= adapter->skip; + adapter->skip = 0; + while (g != NULL && hsize < size) { cur = g->data; /* Merge the head buffer and the next in line */