[FFmpeg-devel] [PATCH 01/21] libavutil/mem: added av_arraydup to accompany av_realloc*_array functions
erkki.seppala.ext at nokia.com
erkki.seppala.ext at nokia.com
Tue Aug 23 12:03:19 EEST 2016
From: Erkki Seppälä <erkki.seppala.ext at nokia.com>
This allows copying an array so that is compatible with the array
reallocation functions. av_memdup won't do, as it uses av_malloc
underneath, but this one uses av_realloc_array for the allocation.
Signed-off-by: Erkki Seppälä <erkki.seppala.ext at nokia.com>
Signed-off-by: OZOPlayer <OZOPL at nokia.com>
---
libavutil/mem.c | 11 +++++++++++
libavutil/mem.h | 11 +++++++++++
2 files changed, 22 insertions(+)
diff --git a/libavutil/mem.c b/libavutil/mem.c
index 1a8fc21..c74374e 100644
--- a/libavutil/mem.c
+++ b/libavutil/mem.c
@@ -307,6 +307,17 @@ void *av_memdup(const void *p, size_t size)
return ptr;
}
+void *av_arraydup(const void *p, size_t nmemb, size_t size)
+{
+ void *ptr = NULL;
+ if (p) {
+ ptr = av_realloc_array(NULL, nmemb, size);
+ if (ptr)
+ memcpy(ptr, p, nmemb * size);
+ }
+ return ptr;
+}
+
int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
{
void **tab;
diff --git a/libavutil/mem.h b/libavutil/mem.h
index 7f0c610..08ed520 100644
--- a/libavutil/mem.h
+++ b/libavutil/mem.h
@@ -514,6 +514,17 @@ char *av_strndup(const char *s, size_t len) av_malloc_attrib;
void *av_memdup(const void *p, size_t size);
/**
+ * Duplicate the array p. This array is compatible with the av_realloc
+ * functions.
+ * @param p array to be duplicated
+ * @param nmemb number of elements in the array
+ * @param size size of an element in the array
+ * @return Pointer to a newly allocated array containing a
+ * copy of p or NULL if the buffer cannot be allocated.
+ */
+void *av_arraydup(const void *p, size_t nmemb, size_t size);
+
+/**
* Overlapping memcpy() implementation.
*
* @param dst Destination buffer
--
2.7.4
More information about the ffmpeg-devel
mailing list