diff mbox series

[FFmpeg-devel,6/7] avutil/integer: Fix undefined left shifts of negative numbers

Message ID AS8P250MB0744C1705DA735763E3923608F2D9@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM
State Accepted
Headers show
Series [FFmpeg-devel,1/7] avcodec/snow_dwt: Fix left shifts of negative numbers | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

Andreas Rheinhardt Oct. 21, 2022, 6:59 p.m. UTC
Affected the integers FATE-test.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavutil/integer.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/libavutil/integer.c b/libavutil/integer.c
index b709c6d487..a692c3783c 100644
--- a/libavutil/integer.c
+++ b/libavutil/integer.c
@@ -103,7 +103,7 @@  AVInteger av_shr_i(AVInteger a, int s){
     for(i=0; i<AV_INTEGER_SIZE; i++){
         unsigned int index= i + (s>>4);
         unsigned int v=0;
-        if(index+1<AV_INTEGER_SIZE) v = a.v[index+1]<<16;
+        if (index + 1 < AV_INTEGER_SIZE) v  = a.v[index + 1] * (1U << 16);
         if(index  <AV_INTEGER_SIZE) v+= a.v[index  ];
         out.v[i]= v >> (s&15);
     }
@@ -158,11 +158,9 @@  AVInteger av_int2i(int64_t a){
 }
 
 int64_t av_i2int(AVInteger a){
-    int i;
-    int64_t out=(int8_t)a.v[AV_INTEGER_SIZE-1];
+    uint64_t out = 0;
 
-    for(i= AV_INTEGER_SIZE-2; i>=0; i--){
+    for (int i = 3; i >= 0; i--)
         out = (out<<16) + a.v[i];
-    }
     return out;
 }