aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-27 13:46:50 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-31 17:01:04 +0200
commitbcbd84f435f5f449c04f93023eb874e07c76470c (patch)
tree26b988282f1bbbb7ab43d3ebdeaca57a00a4b79f
parente04ddba64f4c389b33b07dba6adb89f3492b151c (diff)
downloadffmpeg-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.c10
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);