mirror of https://git.ffmpeg.org/ffmpeg.git
Introduce av_realloc_f.
av_realloc_f helps avoiding memory-leaks in typical uses of realloc.
Signed-off-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 5cd754bca2
)
This commit is contained in:
parent
651e21f584
commit
a75b5a89d1
|
@ -143,6 +143,21 @@ void *av_realloc(void *ptr, size_t size)
|
|||
#endif
|
||||
}
|
||||
|
||||
void *av_realloc_f(void *ptr, size_t nelem, size_t elsize)
|
||||
{
|
||||
size_t size;
|
||||
void *r;
|
||||
|
||||
if (av_size_mult(elsize, nelem, &size)) {
|
||||
av_free(ptr);
|
||||
return NULL;
|
||||
}
|
||||
r = av_realloc(ptr, size);
|
||||
if (!r && size)
|
||||
av_free(ptr);
|
||||
return r;
|
||||
}
|
||||
|
||||
void av_free(void *ptr)
|
||||
{
|
||||
#if CONFIG_MEMALIGN_HACK
|
||||
|
|
|
@ -87,6 +87,16 @@ void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
|
|||
*/
|
||||
void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
|
||||
|
||||
/**
|
||||
* Allocate or reallocate a block of memory.
|
||||
* This function does the same thing as av_realloc, except:
|
||||
* - It takes two arguments and checks the result of the multiplication for
|
||||
* integer overflow.
|
||||
* - It frees the input block in case of failure, thus avoiding the memory
|
||||
* leak with the classic "buf = realloc(buf); if (!buf) return -1;".
|
||||
*/
|
||||
void *av_realloc_f(void *ptr, size_t nelem, size_t elsize);
|
||||
|
||||
/**
|
||||
* Free a memory block which has been allocated with av_malloc(z)() or
|
||||
* av_realloc().
|
||||
|
|
Loading…
Reference in New Issue