all: use FFDIFFSIGN to resolve possible undefined behavior in comparators
authorGanesh Ajjanagadde <gajjanagadde@gmail.com>
Sun, 1 Nov 2015 15:43:56 +0000 (10:43 -0500)
committerGanesh Ajjanagadde <gajjanagadde@gmail.com>
Tue, 3 Nov 2015 21:28:30 +0000 (16:28 -0500)
commit92e483f8ed70d88d4f64337f65bae212502735d4
tree39934a7084b155a0034dfdb1e78248644458a33c
parent265f83fd35977a80e93b3cc13ceb65f52f129a3c
all: use FFDIFFSIGN to resolve possible undefined behavior in comparators

FFDIFFSIGN was created explicitly for this purpose, since the common
return a - b idiom is unsafe regarding overflow on signed integers. It
optimizes to branchless code on common compilers.

FFDIFFSIGN also has the subjective benefit of being easier to read due
to lack of ternary operators.

Tested with FATE.

Things not covered by this are unsigned integers, for which overflows
are well defined, and also places where overflow is clearly impossible,
e.g an instance where the a - b was being done on 24 bit values.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Clément Bœsch <u@pkh.me>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
cmdutils.c
cmdutils_opencl.c
ffmpeg.c
libavfilter/f_sendcmd.c
libavfilter/vf_deshake.c
libavfilter/vf_palettegen.c
libavfilter/vf_removegrain.c
libavformat/subtitles.c