- if (p->num_released_buffers + 1 >= INT_MAX / sizeof(*p->released_buffers)) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
- tmp = av_fast_realloc(p->released_buffers, &p->released_buffers_allocated,
- (p->num_released_buffers + 1) *
- sizeof(*p->released_buffers));
- if (!tmp) {
- ret = AVERROR(ENOMEM);
- goto fail;
+ if (p->num_released_buffers == p->released_buffers_allocated) {
+ AVFrame **tmp = av_realloc_array(p->released_buffers, p->released_buffers_allocated + 1,
+ sizeof(*p->released_buffers));
+ if (tmp) {
+ tmp[p->released_buffers_allocated] = av_frame_alloc();
+ p->released_buffers = tmp;
+ }
+
+ if (!tmp || !tmp[p->released_buffers_allocated]) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ p->released_buffers_allocated++;