diff options
Diffstat (limited to 'libavformat/movenc.c')
-rw-r--r-- | libavformat/movenc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 206c4be3dd..77fc1804b7 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -3085,9 +3085,14 @@ static int mov_flush_fragment(AVFormatContext *s) MOVFragmentInfo *info; avio_flush(s->pb); track->nb_frag_info++; - track->frag_info = av_realloc(track->frag_info, - sizeof(*track->frag_info) * - track->nb_frag_info); + if (track->nb_frag_info >= track->frag_info_capacity) { + unsigned new_capacity = track->nb_frag_info + MOV_FRAG_INFO_ALLOC_INCREMENT; + if (av_reallocp_array(&track->frag_info, + new_capacity, + sizeof(*track->frag_info))) + return AVERROR(ENOMEM); + track->frag_info_capacity = new_capacity; + } info = &track->frag_info[track->nb_frag_info - 1]; info->offset = avio_tell(s->pb); info->time = mov->tracks[i].frag_start; |