summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--bignum.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5daca05a0c..b7f2ac3e3e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jul 2 23:47:50 2013 Tanaka Akira <akr@fsij.org>
+
+ * bignum.c (roomof): Cast to long.
+ (rb_ull2big): Fix bignew arguments.
+
Tue Jul 2 21:17:37 2013 Tanaka Akira <akr@fsij.org>
* bignum.c (rb_cstr_to_inum): Merge two temporary buffers.
diff --git a/bignum.c b/bignum.c
index 7ecfb89a86..20bc8512cd 100644
--- a/bignum.c
+++ b/bignum.c
@@ -80,7 +80,7 @@ static VALUE big_three = Qnil;
rb_absint_size(x, NULL))
#define BIGDIVREM_EXTRA_WORDS 2
-#define roomof(n, m) ((int)(((n)+(m)-1) / (m)))
+#define roomof(n, m) ((long)(((n)+(m)-1) / (m)))
#define bdigit_roomof(n) roomof(n, SIZEOF_BDIGITS)
#define BARY_ARGS(ary) ary, numberof(ary)
@@ -2199,7 +2199,7 @@ static VALUE
rb_ull2big(unsigned LONG_LONG n)
{
long i;
- VALUE big = bignew(DIGSPERLL, bdigit_roomof(SIZEOF_LONG_LONG));
+ VALUE big = bignew(bdigit_roomof(SIZEOF_LONG_LONG), 1);
BDIGIT *digits = BDIGITS(big);
#if SIZEOF_BDIGITS >= SIZEOF_LONG_LONG