summaryrefslogtreecommitdiff
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-27 13:17:09 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-08-31 17:00:42 +0200
commite04ddba64f4c389b33b07dba6adb89f3492b151c (patch)
treedb0a63cdf1c15699b32409f9663e22ccd09fa550 /libavformat/utils.c
parent6e0823ab83056e1a0905c64568738b7f2fb14f4d (diff)
downloadffmpeg-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.c2
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)