summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-09 22:47:51 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-09 22:47:51 +0000
commit1acc9062bca73f6246773a941d3df2741a74c134 (patch)
tree9e7f9655a0b41a27e70dcb82febe56f4d821785b
parent164e04ba4a4d661937befc551859b94a5840edb6 (diff)
Refactored.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--bignum.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/bignum.c b/bignum.c
index 7f4a2abaa4..7d4bd3cb17 100644
--- a/bignum.c
+++ b/bignum.c
@@ -1236,9 +1236,8 @@ rb_big2ulong(VALUE x)
return -(long)num;
if (num == 1+(unsigned long)(-(LONG_MIN+1)))
return LONG_MIN;
- rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
}
- return num;
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
}
SIGNED_VALUE
@@ -1247,17 +1246,16 @@ rb_big2long(VALUE x)
VALUE num = big2ulong(x, "long", TRUE);
if (RBIGNUM_POSITIVE_P(x)) {
- if (LONG_MAX < num)
- rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
- return num;
+ if (num <= LONG_MAX)
+ return num;
}
else {
if (num <= LONG_MAX)
return -(long)num;
if (num == 1+(unsigned long)(-(LONG_MIN+1)))
return LONG_MIN;
- rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
}
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
}
#if HAVE_LONG_LONG
@@ -1293,9 +1291,8 @@ rb_big2ull(VALUE x)
return -(LONG_LONG)num;
if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
return LLONG_MIN;
- rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");
}
- return num;
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");
}
LONG_LONG
@@ -1304,17 +1301,16 @@ rb_big2ll(VALUE x)
unsigned LONG_LONG num = big2ull(x, "long long");
if (RBIGNUM_POSITIVE_P(x)) {
- if (LLONG_MAX < num)
- rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
- return num;
+ if (num <= LLONG_MAX)
+ return num;
}
else {
if (num <= LLONG_MAX)
return -(LONG_LONG)num;
if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
return LLONG_MIN;
- rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
}
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
}
#endif /* HAVE_LONG_LONG */