bzip2: rewrite bit of code which depends on integer overflow

function                                             old     new   delta
sendMTFValues                                       2093    2070     -23

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-02-03 03:34:40 +01:00
parent 83dd4ff696
commit 982c44d030

View File

@ -297,7 +297,7 @@ void sendMTFValues(EState* s)
// 200..599 = 3
// 600..1199 = 4
// 1200..2399 = 5
// else 6
// 2400..99999 = 6
nGroups = 2;
nGroups += (s->nMTF >= 200);
nGroups += (s->nMTF >= 600);
@ -317,12 +317,12 @@ void sendMTFValues(EState* s)
unsigned tFreq, aFreq;
tFreq = remF / nPart;
ge = gs - 1; //underflows on 1st iteration
ge = gs;
aFreq = 0;
while (aFreq < tFreq && (int)ge < (int)alphaSize-1) {
ge++;
aFreq += s->mtfFreq[ge];
while (aFreq < tFreq && ge < alphaSize) {
aFreq += s->mtfFreq[ge++];
}
ge--;
if (ge > gs
&& nPart != nGroups && nPart != 1