Fixnum#[] blows when small Bignum is given
------------------------------------------

                 Key: JRUBY-6050
                 URL: https://jira.codehaus.org/browse/JRUBY-6050
             Project: JRuby
          Issue Type: Bug
          Components: Core Classes/Modules
            Reporter: Yusuke Endoh


$ bin/jruby -e 'p 3[(1<<100).coerce(1).first]'
RubyNumeric.java:265:in `fix2long': java.lang.ClassCastException: 
org.jruby.RubyBignum cannot be cast to org.jruby.RubyFixnum
        from RubyFixnum.java:1023:in `op_aref'
*snip*


diff --git a/src/org/jruby/RubyFixnum.java b/src/org/jruby/RubyFixnum.java
index 89eb177..24e9073 100644
--- a/src/org/jruby/RubyFixnum.java
+++ b/src/org/jruby/RubyFixnum.java
@@ -1018,6 +1018,7 @@ public class RubyFixnum extends RubyInteger {
             if (!(tryFix instanceof RubyFixnum)) {
                 return big.getValue().signum() == 0 || value >= 0 ? 
RubyFixnum.zero(getRuntime()) : RubyFixnum.one(getRuntime());
             }
+           other = tryFix;
         }
 
         long otherValue = fix2long(other);

-- 
Yusuke Endoh <m...@tsg.ne.jp>

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to