diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | bignum.c | 6 |
2 files changed, 10 insertions, 3 deletions
@@ -1,3 +1,10 @@ +Fri Jun 7 17:41:00 2013 Charlie Somerville <charliesome@ruby-lang.org> + + * bignum.c (rb_absint_size): explicit cast to BDIGIT to avoid implicit + 64 bit to 32 bit shortening warning + * bignum.c (rb_int_export): ditto + * bignum.c (int_import_push_bits): ditto + Fri Jun 7 17:31:00 2013 Charlie Somerville <charliesome@ruby-lang.org> * internal.h (RCLASS_SUPER): use descriptive variable name @@ -472,7 +472,7 @@ rb_absint_size(VALUE val, int *number_of_leading_zero_bits) fixbuf[0] = v; #else for (i = 0; i < (int)(sizeof(fixbuf)/sizeof(*fixbuf)); i++) { - fixbuf[i] = v & ((1L << (SIZEOF_BDIGITS * CHAR_BIT)) - 1); + fixbuf[i] = (BDIGIT)(v & ((1L << (SIZEOF_BDIGITS * CHAR_BIT)) - 1)); v >>= SIZEOF_BDIGITS * CHAR_BIT; } #endif @@ -623,7 +623,7 @@ rb_int_export(VALUE val, int *signp, size_t *wordcount_allocated, void *words, s fixbuf[0] = v; #else for (i = 0; i < (int)(sizeof(fixbuf)/sizeof(*fixbuf)); i++) { - fixbuf[i] = v & ((1L << (SIZEOF_BDIGITS * CHAR_BIT)) - 1); + fixbuf[i] = (BDIGIT)(v & ((1L << (SIZEOF_BDIGITS * CHAR_BIT)) - 1)); v >>= SIZEOF_BDIGITS * CHAR_BIT; } #endif @@ -775,7 +775,7 @@ int_import_push_bits(int data, int numbits, BDIGIT_DBL *ddp, int *numbits_in_dd_ (*ddp) |= ((BDIGIT_DBL)data) << (*numbits_in_dd_p); *numbits_in_dd_p += numbits; while (SIZEOF_BDIGITS*CHAR_BIT <= *numbits_in_dd_p) { - *(*dpp)++ = (*ddp) & (((BDIGIT_DBL)1 << (SIZEOF_BDIGITS*CHAR_BIT))-1); + *(*dpp)++ = (BDIGIT)((*ddp) & (((BDIGIT_DBL)1 << (SIZEOF_BDIGITS*CHAR_BIT))-1)); *ddp >>= SIZEOF_BDIGITS*CHAR_BIT; *numbits_in_dd_p -= SIZEOF_BDIGITS*CHAR_BIT; } |