Skip to content

Commit c7a4ed4

Browse files
committed
resolving #218
1 parent d999fed commit c7a4ed4

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

bn_mp_ilogb.c

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
static mp_word s_pow(mp_word base, mp_word exponent)
88
{
99
mp_word result = 1uLL;
10-
while (exponent) {
11-
if ((exponent & 0x1) == 1) {
10+
while (exponent != 0u) {
11+
if ((exponent & 1u) == 1u) {
1212
result *= base;
1313
}
1414
exponent >>= 1;
@@ -85,13 +85,17 @@ int mp_ilogb(mp_int *a, mp_digit base, mp_int *c)
8585
return MP_VAL;
8686
}
8787

88-
if (base < 2) {
88+
if (base < 2u) {
8989
return MP_VAL;
90-
} else if (base == 2) {
90+
}
91+
if (base == 2u) {
9192
cmp = mp_count_bits(a) - 1;
92-
mp_set_int(c, (unsigned long)cmp);
93+
if ((e = mp_set_int(c, (unsigned long)cmp)) != MP_OKAY) {
94+
goto LTM_ERR;
95+
}
9396
return err;
94-
} else if (a->used == 1) {
97+
}
98+
if (a->used == 1) {
9599
tmp = s_digit_ilogb(base, a->dp[0]);
96100
mp_set(c, tmp);
97101
return err;
@@ -114,9 +118,9 @@ int mp_ilogb(mp_int *a, mp_digit base, mp_int *c)
114118
return err;
115119
}
116120

117-
low = 0uL;
121+
low = 0u;
118122
mp_set(&bracket_low, 1uL);
119-
high = 1uL;
123+
high = 1u;
120124

121125
mp_set(&bracket_high, base);
122126

@@ -138,14 +142,14 @@ int mp_ilogb(mp_int *a, mp_digit base, mp_int *c)
138142
}
139143
mp_set(&bi_base, base);
140144

141-
while ((high - low) > 1) {
145+
while ((high - low) > 1u) {
142146
mid = (high + low) >> 1;
143147
/* Difference can be larger then the type behind mp_digit can hold */
144148
if ((mid - low) > (unsigned int)(MP_MASK)) {
145149
err = MP_VAL;
146150
goto LBL_ERR;
147151
}
148-
if ((err = mp_expt_d(&bi_base, (mid - low), &t)) != MP_OKAY) {
152+
if ((err = mp_expt_d(&bi_base, (mp_digit)(mid - low), &t)) != MP_OKAY) {
149153
goto LBL_ERR;
150154
}
151155
if ((err = mp_mul(&bracket_low, &t, &bracket_mid)) != MP_OKAY) {
@@ -161,15 +165,21 @@ int mp_ilogb(mp_int *a, mp_digit base, mp_int *c)
161165
mp_exch(&bracket_mid, &bracket_low);
162166
}
163167
if (cmp == MP_EQ) {
164-
mp_set_int(c, (unsigned long)mid);
168+
if ((e = mp_set_int(c, (unsigned long)mid)) != MP_OKAY) {
169+
goto LTM_ERR;
170+
}
165171
goto LBL_END;
166172
}
167173
}
168174

169175
if (mp_cmp(&bracket_high, a) == MP_EQ) {
170-
mp_set_int(c, (unsigned long)high);
176+
if ((e = mp_set_int(c, (unsigned long)high)) != MP_OKAY) {
177+
goto LTM_ERR;
178+
}
171179
} else {
172-
mp_set_int(c, (unsigned long)low);
180+
if ((e = mp_set_int(c, (unsigned long)low)) != MP_OKAY) {
181+
goto LTM_ERR;
182+
}
173183
}
174184

175185
LBL_END:

0 commit comments

Comments
 (0)