diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-27 13:17:09 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-08-31 17:00:42 +0200 |
commit | e04ddba64f4c389b33b07dba6adb89f3492b151c (patch) | |
tree | db0a63cdf1c15699b32409f9663e22ccd09fa550 /libavformat/utils.c | |
parent | 6e0823ab83056e1a0905c64568738b7f2fb14f4d (diff) | |
download | ffmpeg-e04ddba64f4c389b33b07dba6adb89f3492b151c.tar.gz |
avformat/utils: Don't compare pointers when sorting chapters
The chapters are independently allocated, so that comparing
the pointers is undefined behaviour. Furthermore, its result
is not platform-independent (and may not even be deterministic
on a particular platform). So compare the chapters' ids instead.
(avpriv_new_chapter() ensures that there are no duplicate ids.)
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r-- | libavformat/utils.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 78bfb36cd0..264b5b1a4b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3160,7 +3160,7 @@ static int chapter_start_cmp(const void *p1, const void *p2) int delta = av_compare_ts(ch1->start, ch1->time_base, ch2->start, ch2->time_base); if (delta) return delta; - return (ch1 > ch2) - (ch1 < ch2); + return FFDIFFSIGN(ch1->id, ch2->id); } static int compute_chapters_end(AVFormatContext *s) |