From db65bfa129830aca31a22e9ea37afe5e49c20d6c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 3 Jul 2012 12:38:55 +0200 Subject: [PATCH] buffer: fix the _get_mapped function Fix the internal _get_mapped function. gst_memory_make_mapped() takes ownership of the memory so we need to keep an additional ref until we are done. --- gst/gstbuffer.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c index 7ebc4a72c0..925dd17904 100644 --- a/gst/gstbuffer.c +++ b/gst/gstbuffer.c @@ -785,18 +785,17 @@ _get_mapped (GstBuffer * buffer, guint idx, GstMapInfo * info, { GstMemory *mem, *mapped; - mem = GST_BUFFER_MEM_PTR (buffer, idx); + mem = gst_memory_ref (GST_BUFFER_MEM_PTR (buffer, idx)); mapped = gst_memory_make_mapped (mem, info, flags); - if (!mapped) - return NULL; - if (mapped != mem) { + if (mapped && mapped != mem) { + /* new memory, replace old memory */ GST_BUFFER_MEM_PTR (buffer, idx) = mapped; - gst_memory_unref (mem); - mem = mapped; } - return mem; + gst_memory_unref (mem); + + return mapped; } /**