bignum.c: avoid (size_t)--

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2018-11-16 03:09:00 +00:00
parent ca14914039
commit 1a84c57e23

View File

@ -385,6 +385,7 @@ bdigitdbl2bary(BDIGIT *ds, size_t n, BDIGIT_DBL num)
static int static int
bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn) bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
{ {
size_t i;
BARY_TRUNC(xds, xn); BARY_TRUNC(xds, xn);
BARY_TRUNC(yds, yn); BARY_TRUNC(yds, yn);
@ -393,11 +394,12 @@ bary_cmp(const BDIGIT *xds, size_t xn, const BDIGIT *yds, size_t yn)
if (xn > yn) if (xn > yn)
return 1; return 1;
while (xn-- && xds[xn] == yds[xn]) for (i = 0; i < xn; i++)
; if (xds[xn - i - 1] != yds[yn - i - 1])
if (xn == (size_t)-1) break;
if (i == xn)
return 0; return 0;
return xds[xn] < yds[xn] ? -1 : 1; return xds[xn - i - 1] < yds[yn - i - 1] ? -1 : 1;
} }
static BDIGIT static BDIGIT
@ -5152,6 +5154,9 @@ rb_big2long(VALUE x)
static unsigned LONG_LONG static unsigned LONG_LONG
big2ull(VALUE x, const char *type) big2ull(VALUE x, const char *type)
{ {
#if SIZEOF_LONG_LONG > SIZEOF_BDIGIT
size_t i;
#endif
size_t len = BIGNUM_LEN(x); size_t len = BIGNUM_LEN(x);
unsigned LONG_LONG num; unsigned LONG_LONG num;
BDIGIT *ds = BDIGITS(x); BDIGIT *ds = BDIGITS(x);
@ -5164,9 +5169,9 @@ big2ull(VALUE x, const char *type)
num = (unsigned LONG_LONG)ds[0]; num = (unsigned LONG_LONG)ds[0];
#else #else
num = 0; num = 0;
while (len--) { for (i = 0; i < len; i++) {
num = BIGUP(num); num = BIGUP(num);
num += ds[len]; num += ds[len - i - 1];
} }
#endif #endif
return num; return num;