From c13cd729bfdb5f5eb44ec681db4fea85f029a31f Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 12 Jul 2007 09:52:48 +0000 Subject: * 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@12743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'range.c') diff --git a/range.c b/range.c index e1dee57835..a63919d0d9 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)); } -- cgit v1.2.3