diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-12 09:52:48 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-07-12 09:52:48 +0000 |
commit | c8dd501553462e1c35e7a8462eb7fbba567395c9 (patch) | |
tree | 8309aac94863ebd96460329ba5839aa7acbebbfc /range.c | |
parent | 06faac5b79ee0f28cddcceda9c6af5a479edfeff (diff) | |
download | ruby-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.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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)); } |