From f89dbdb89820aa1fe51c0216eb1c15928c9349d6 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 12 Mar 2009 09:16:15 +0000 Subject: * array.c, bignum.c, dln.c, error.c, gc.c, io.c, marshal.c, numeric.c, pack.c, strftime.c, string.c, thread.c, transcode.c, transcode_data.h, util.c, variable.c, vm_dump.c, include/ruby/encoding.h, missing/crypt.c, missing/vsnprintf.c: suppress VC type warnings. [ruby-core:22726] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bignum.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'bignum.c') diff --git a/bignum.c b/bignum.c index c03b046d0..f508f71e0 100644 --- a/bignum.c +++ b/bignum.c @@ -69,10 +69,11 @@ rb_cmpint(VALUE val, VALUE a, VALUE b) } #define RBIGNUM_SET_LEN(b,l) \ - ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ - (RBASIC(b)->flags = (RBASIC(b)->flags & ~RBIGNUM_EMBED_LEN_MASK) | \ - ((l) << RBIGNUM_EMBED_LEN_SHIFT)) : \ - (RBIGNUM(b)->as.heap.len = (l))) + ((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ + (void)(RBASIC(b)->flags = \ + (RBASIC(b)->flags & ~RBIGNUM_EMBED_LEN_MASK) | \ + ((l) << RBIGNUM_EMBED_LEN_SHIFT)) : \ + (void)(RBIGNUM(b)->as.heap.len = (l))) static void rb_big_realloc(VALUE big, long len) @@ -190,17 +191,21 @@ bigfixize(VALUE x) long len = RBIGNUM_LEN(x); BDIGIT *ds = BDIGITS(x); - if (len*SIZEOF_BDIGITS <= sizeof(long)) { + if (len > 0 && len*SIZEOF_BDIGITS <= sizeof(long)) { long num = 0; +#if 2*SIZEOF_BDIGITS > SIZEOF_LONG + num = (long)ds[0]; +#else while (len--) { - num = BIGUP(num) + ds[len]; + num = (long)(BIGUP(num) + ds[len]); } +#endif if (num >= 0) { if (RBIGNUM_SIGN(x)) { if (POSFIXABLE(num)) return LONG2FIX(num); } else { - if (NEGFIXABLE(-(long)num)) return LONG2FIX(-(long)num); + if (NEGFIXABLE(-num)) return LONG2FIX(-num); } } } @@ -1017,7 +1022,7 @@ big2ulong(VALUE x, const char *type, int check) num = BIGUP(num); num += ds[len]; } - return num; + return (VALUE)num; } VALUE @@ -1581,7 +1586,7 @@ bigmul1_normal(VALUE x, VALUE y) n = BIGDN(n); } if (n) { - zds[i + j] = n; + zds[i + j] = (BDIGIT)n; } } rb_thread_check_ints(); @@ -1770,7 +1775,7 @@ bigsqr_fast(VALUE x) zds[i + len] = BIGLO(c); c = BIGDN(c); } - if (c) zds[i + len + 1] += c; + if (c) zds[i + len + 1] += (BDIGIT)c; } return z; } @@ -1889,7 +1894,7 @@ bigdivrem1(void *ptr) for (nyzero = 0; !yds[nyzero]; nyzero++); do { if (bds->stop) return Qnil; - if (zds[j] == yds[ny-1]) q = BIGRAD-1; + if (zds[j] == yds[ny-1]) q = (BDIGIT)BIGRAD-1; else q = (BDIGIT)((BIGUP(zds[j]) + zds[j-1])/yds[ny-1]); if (q) { i = nyzero; num = 0; t2 = 0; @@ -2480,7 +2485,7 @@ rb_big_or(VALUE xx, VALUE yy) zds[i] = ds1[i] | ds2[i]; } for (; i