From d3e5fbb1406995e07fccbff3ca8c1e24f57a1f7b Mon Sep 17 00:00:00 2001 From: Ganesh Ajjanagadde Date: Sat, 19 Sep 2015 22:18:54 -0400 Subject: [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers This fixes -Wshift-negative-value reported with clang 3.7+, e.g http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7. Note that the patch crucially depends on int >= 32 bits, an assumption made in many places in the codebase. Signed-off-by: Ganesh Ajjanagadde Signed-off-by: Michael Niedermayer --- libavcodec/apedec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index 5536e0f8b1..7b34d26ada 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int version, APEFilter *f, /* Update the adaption coefficients */ absres = FFABS(res); if (absres) - *f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >> + *f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >> (25 + (absres <= f->avg*3) + (absres <= f->avg*4/3)); else *f->adaptcoeffs = 0;