diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-27 13:46:50 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-31 17:01:04 +0200 |
commit | bcbd84f435f5f449c04f93023eb874e07c76470c (patch) | |
tree | 26b988282f1bbbb7ab43d3ebdeaca57a00a4b79f | |
parent | e04ddba64f4c389b33b07dba6adb89f3492b151c (diff) | |
download | ffmpeg-bcbd84f435f5f449c04f93023eb874e07c76470c.tar.gz |
avformat/utils: Don't allocate zero-sized array
It is unnecessary and also ill-defined: av_malloc() returns a 1-byte
block of memory in this case, but this is not documented.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavformat/utils.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 264b5b1a4b..b3ff9e95eb 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3167,15 +3167,19 @@ static int compute_chapters_end(AVFormatContext *s) { unsigned int i; int64_t max_time = 0; - AVChapter **timetable = av_malloc(s->nb_chapters * sizeof(*timetable)); + AVChapter **timetable; - if (!timetable) - return AVERROR(ENOMEM); + if (!s->nb_chapters) + return 0; if (s->duration > 0 && s->start_time < INT64_MAX - s->duration) max_time = s->duration + ((s->start_time == AV_NOPTS_VALUE) ? 0 : s->start_time); + timetable = av_malloc(s->nb_chapters * sizeof(*timetable)); + if (!timetable) + return AVERROR(ENOMEM); + for (i = 0; i < s->nb_chapters; i++) timetable[i] = s->chapters[i]; qsort(timetable, s->nb_chapters, sizeof(*timetable), chapter_start_cmp); |