From 89b5039ff265e0519261b07aa9bdd3ed7df6090c Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 28 Apr 2013 00:49:14 +0200 Subject: [PATCH] avutil/mem: add av_memdup() Signed-off-by: Michael Niedermayer --- libavutil/mem.c | 11 +++++++++++ libavutil/mem.h | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/libavutil/mem.c b/libavutil/mem.c index 687ec55875..cfa4cbd57a 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -229,6 +229,17 @@ char *av_strdup(const char *s) return ptr; } +void *av_memdup(const void *p, size_t size) +{ + void *ptr = NULL; + if (p) { + ptr = av_malloc(size); + if (ptr) + memcpy(ptr, p, size); + } + return ptr; +} + void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem) { /* see similar ffmpeg.c:grow_array() */ diff --git a/libavutil/mem.h b/libavutil/mem.h index ced9453869..02395b792b 100644 --- a/libavutil/mem.h +++ b/libavutil/mem.h @@ -179,6 +179,14 @@ av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t si */ char *av_strdup(const char *s) av_malloc_attrib; +/** + * Duplicate the buffer p. + * @param p buffer to be duplicated + * @return Pointer to a newly allocated buffer containing a + * copy of p or NULL if the buffer cannot be allocated. + */ +void *av_memdup(const void *p, size_t size); + /** * Free a memory block which has been allocated with av_malloc(z)() or * av_realloc() and set the pointer pointing to it to NULL.