aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--bignum.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ea28a7918..acdc4bdee3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/bignum.c b/bignum.c
index e076acbfb5..a1b9d30aec 100644
--- a/bignum.c
+++ b/bignum.c
@@ -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;
}