mirror of https://git.ffmpeg.org/ffmpeg.git
avutil/integer: Fix undefined left shifts of negative numbers
Affected the integers FATE-test. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
f49375f28f
commit
9a6cdd1ba3
|
@ -103,7 +103,7 @@ AVInteger av_shr_i(AVInteger a, int s){
|
||||||
for(i=0; i<AV_INTEGER_SIZE; i++){
|
for(i=0; i<AV_INTEGER_SIZE; i++){
|
||||||
unsigned int index= i + (s>>4);
|
unsigned int index= i + (s>>4);
|
||||||
unsigned int v=0;
|
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 ];
|
if(index <AV_INTEGER_SIZE) v+= a.v[index ];
|
||||||
out.v[i]= v >> (s&15);
|
out.v[i]= v >> (s&15);
|
||||||
}
|
}
|
||||||
|
@ -158,11 +158,9 @@ AVInteger av_int2i(int64_t a){
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t av_i2int(AVInteger a){
|
int64_t av_i2int(AVInteger a){
|
||||||
int i;
|
uint64_t out = a.v[3];
|
||||||
int64_t out=(int8_t)a.v[AV_INTEGER_SIZE-1];
|
|
||||||
|
|
||||||
for(i= AV_INTEGER_SIZE-2; i>=0; i--){
|
for (int i = 2; i >= 0; i--)
|
||||||
out = (out<<16) + a.v[i];
|
out = (out<<16) + a.v[i];
|
||||||
}
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue