diff --git a/bn_mp_set_long.c b/bn_mp_set_long.c index 223c0e3ca..0cfd8e08f 100644 --- a/bn_mp_set_long.c +++ b/bn_mp_set_long.c @@ -12,25 +12,7 @@ * SPDX-License-Identifier: Unlicense */ -/* set a platform dependent unsigned long int */ -#if (ULONG_MAX != 0xFFFFFFFFUL) || (DIGIT_BIT < 32) MP_SET_XLONG(mp_set_long, unsigned long) -#else -int mp_set_long(mp_int *a, unsigned long b) -{ - int x = 0; - int res = mp_grow(a, (CHAR_BIT * sizeof(unsigned long) + DIGIT_BIT - 1) / DIGIT_BIT); - if (res == MP_OKAY) { - mp_zero(a); - if (b) { - a->dp[x++] = (mp_digit)b; - } - a->used = x; - } - return res; -} - -#endif #endif /* ref: $Format:%D$ */ diff --git a/tommath_private.h b/tommath_private.h index 26ce16196..15c23388a 100644 --- a/tommath_private.h +++ b/tommath_private.h @@ -85,7 +85,8 @@ int func_name (mp_int * a, type b) \ mp_zero(a); \ while (b != 0u) { \ a->dp[x++] = ((mp_digit)b & MP_MASK); \ - b >>= DIGIT_BIT; \ + if ((CHAR_BIT * sizeof (b)) <= DIGIT_BIT) { break; } \ + b >>= ((CHAR_BIT * sizeof (b)) <= DIGIT_BIT ? 0 : DIGIT_BIT); \ } \ a->used = x; \ } \