[FFmpeg-cvslog] avcodec/apedec: fix undefined left shifts of negative numbers

Ganesh Ajjanagadde git at videolan.org
Tue Sep 29 15:16:00 CEST 2015


ffmpeg | branch: master | Ganesh Ajjanagadde <gajjanagadde at gmail.com> | Sat Sep 19 22:18:54 2015 -0400| [d3e5fbb1406995e07fccbff3ca8c1e24f57a1f7b] | committer: Michael Niedermayer

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 <gajjanagadde at gmail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d3e5fbb1406995e07fccbff3ca8c1e24f57a1f7b
---

 libavcodec/apedec.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 5536e0f..7b34d26 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;



More information about the ffmpeg-cvslog mailing list