Using an unsigned variable avoids problems with overflows.
There is further no need for a 64-bit intermediate here.
Signed-off-by: Mans Rullgard <mans@mansr.com>
{
MPCContext *c = s->priv_data;
int ret, size, size2, curbits, cur = c->curframe;
- int64_t tmp, pos;
+ unsigned tmp;
+ int64_t pos;
if (c->curframe >= c->fcount && c->fcount)
return -1;
if(curbits <= 12){
size2 = (tmp >> (12 - curbits)) & 0xFFFFF;
}else{
- tmp = (tmp << 32) | avio_rl32(s->pb);
- size2 = (tmp >> (44 - curbits)) & 0xFFFFF;
+ size2 = (tmp << (curbits - 12) | avio_rl32(s->pb) >> (44 - curbits)) & 0xFFFFF;
}
curbits += 20;
avio_seek(s->pb, pos, SEEK_SET);