From: Tim-Philipp Müller Date: Tue, 5 Dec 2017 15:16:36 +0000 (+0000) Subject: buffer: document that _extract_dup() will return NULL for 0-sized buf X-Git-Tag: 1.16.2~564 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bcc5e5bcd579b67af3963eb117d152a4a67ca0c4;p=platform%2Fupstream%2Fgstreamer.git buffer: document that _extract_dup() will return NULL for 0-sized buf And make it explicit, and don't call _extract() on NULL data buffer. --- diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c index 34ca517..27cc0d8 100644 --- a/gst/gstbuffer.c +++ b/gst/gstbuffer.c @@ -2393,7 +2393,7 @@ gst_buffer_foreach_meta (GstBuffer * buffer, GstBufferForeachMetaFunc func, * @offset: the offset to extract * @size: the size to extract * @dest: (array length=dest_size) (element-type guint8) (out): A pointer where - * the destination array will be written. + * the destination array will be written. Might be %NULL if the size is 0. * @dest_size: (out): A location where the size of @dest can be written * * Extracts a copy of at most @size bytes the data at @offset into @@ -2406,13 +2406,18 @@ void gst_buffer_extract_dup (GstBuffer * buffer, gsize offset, gsize size, gpointer * dest, gsize * dest_size) { - gsize real_size; + gsize real_size, alloc_size; real_size = gst_buffer_get_size (buffer); - *dest = g_malloc (MIN (real_size - offset, size)); - - *dest_size = gst_buffer_extract (buffer, offset, *dest, size); + alloc_size = MIN (real_size - offset, size); + if (alloc_size == 0) { + *dest = NULL; + *dest_size = 0; + } else { + *dest = g_malloc (alloc_size); + *dest_size = gst_buffer_extract (buffer, offset, *dest, size); + } } GST_DEBUG_CATEGORY_STATIC (gst_parent_buffer_meta_debug);