diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-06-05 11:19:16 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-06-05 11:19:16 +0200 |
commit | 30b491f1c99aa7992157791a98d6cdae6ca2e895 (patch) | |
tree | 816c548897f653bb339ff22848c4b6bb5858b4ea /libavutil/mem.c | |
parent | ea038b996d5662702b2247a6aa919dee1cebc0be (diff) | |
parent | 3b4feac1ec14f861bdd7f494f288f4d8dd7f449e (diff) | |
download | ffmpeg-30b491f1c99aa7992157791a98d6cdae6ca2e895.tar.gz |
Merge commit '3b4feac1ec14f861bdd7f494f288f4d8dd7f449e'
* commit '3b4feac1ec14f861bdd7f494f288f4d8dd7f449e':
movenc: Keep track of the allocated size for the cluster array
mem: Add av_realloc_array and av_reallocp_array
Conflicts:
doc/APIchanges
libavformat/movenc.c
libavutil/mem.c
libavutil/mem.h
libavutil/version.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavutil/mem.c')
-rw-r--r-- | libavutil/mem.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libavutil/mem.c b/libavutil/mem.c index 66502eb467..1f2b0c3dd3 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -180,6 +180,32 @@ void *av_realloc_f(void *ptr, size_t nelem, size_t elsize) return r; } +void *av_realloc_array(void *ptr, size_t nmemb, size_t size) +{ + if (size <= 0 || nmemb >= INT_MAX / size) + return NULL; + return av_realloc(ptr, nmemb * size); +} + +int av_reallocp_array(void *ptr, size_t nmemb, size_t size) +{ + void **ptrptr = ptr; + void *ret; + if (size <= 0 || nmemb >= INT_MAX / size) + return AVERROR(ENOMEM); + if (nmemb <= 0) { + av_freep(ptr); + return 0; + } + ret = av_realloc(*ptrptr, nmemb * size); + if (!ret) { + av_freep(ptr); + return AVERROR(ENOMEM); + } + *ptrptr = ret; + return 0; +} + void av_free(void *ptr) { #if CONFIG_MEMALIGN_HACK |