summaryrefslogtreecommitdiffstats
path: root/range.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-12 09:52:48 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-12 09:52:48 +0000
commitc8dd501553462e1c35e7a8462eb7fbba567395c9 (patch)
tree8309aac94863ebd96460329ba5839aa7acbebbfc /range.c
parent06faac5b79ee0f28cddcceda9c6af5a479edfeff (diff)
downloadruby-c8dd501553462e1c35e7a8462eb7fbba567395c9.tar.gz
ruby-c8dd501553462e1c35e7a8462eb7fbba567395c9.tar.xz
ruby-c8dd501553462e1c35e7a8462eb7fbba567395c9.zip
* range.c (range_max): use FIX2LONG instead of FIX2INT to avoid
RangeError by ((-0x80000001)...(-0x80000001)).max on LP64. * insns.def (opt_plus): use FIX2LONG instead of FIX2INT to avoid RangeError by 0x3fffffffffffffff+1 on LP64. * insns.def (opt_succ): don't use 0x80000000 which assumes 32bit VALUE. use FIX2LONG instead of FIX2INT. [ruby-dev:31190] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'range.c')
-rw-r--r--range.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/range.c b/range.c
index e1dee5783..a63919d0d 100644
--- a/range.c
+++ b/range.c
@@ -503,7 +503,7 @@ range_max(VALUE range)
return Qnil;
if (EXCL(range)) {
if (FIXNUM_P(e)) {
- return INT2NUM(FIX2INT(e) - 1);
+ return LONG2NUM(FIX2LONG(e) - 1);
}
return rb_funcall(e, '-', 1, INT2FIX(1));
}