diff --git a/libavutil/mem.c b/libavutil/mem.c index 1f2b0c3dd3..76f6b65d1a 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -190,19 +190,9 @@ void *av_realloc_array(void *ptr, size_t nmemb, size_t 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); + *ptrptr = av_realloc_f(*ptrptr, nmemb, size); + if (!*ptrptr && !(nmemb && size)) return AVERROR(ENOMEM); - } - *ptrptr = ret; return 0; }