diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-12 09:16:15 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-12 09:16:15 +0000 |
commit | d1abc53721a15bd545b60c875b05f28dd7e01e57 (patch) | |
tree | 44da5708baceb68988497901e3915fbcece7c02d /bignum.c | |
parent | 080525aa68c68df1fd4c1484bea1de88e3c1f79f (diff) |
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@22914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -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<l2; i++) { - zds[i] = sign?ds2[i]:(BIGRAD-1); + zds[i] = sign?ds2[i]:(BDIGIT)(BIGRAD-1); } if (!RBIGNUM_SIGN(z)) get2comp(z); |