Bignum#[] returns an incorrect result when Bignum is given
----------------------------------------------------------
Key: JRUBY-6049
URL: https://jira.codehaus.org/browse/JRUBY-6049
Project: JRuby
Issue Type: Bug
Components: Core Classes/Modules
Reporter: Yusuke Endoh
$ bin/jruby -e 'p (-1<<100)[(1<<100)]'
0
$ ruby -e 'p (-1<<100)[(1<<100)]'
1
$ bin/jruby -e 'p ((1<<100) + 3)[(1<<100).coerce(1).first]'
0
$ ruby -e 'p ((1<<100) + 3)[(1<<100).coerce(1).first]'
1
diff --git a/src/org/jruby/RubyBignum.java b/src/org/jruby/RubyBignum.java
index b42a349..cd8d9d7 100644
--- a/src/org/jruby/RubyBignum.java
+++ b/src/org/jruby/RubyBignum.java
@@ -787,8 +787,9 @@ public class RubyBignum extends RubyInteger {
*/
@JRubyMethod(name = "[]", required = 1)
public RubyFixnum op_aref(IRubyObject other) {
- if (other instanceof RubyBignum) {
- if (((RubyBignum) other).value.signum() >= 0 || value.signum() ==
-1) {
+ if (other instanceof RubyBignum && (other = bignorm(getRuntime(),
((RubyBignum) other).value)) instanceof RubyBignum) {
+
+ if ((((RubyBignum) other).value.signum() >= 0) != (value.signum()
== -1)) {
return RubyFixnum.zero(getRuntime());
}
return RubyFixnum.one(getRuntime());
--
Yusuke Endoh <[email protected]>
--
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