Working with the enumerable methods on arrays containing strings created by
splicing can raise a Java Exception
----------------------------------------------------------------------------------------------------------------
Key: JRUBY-4084
URL: http://jira.codehaus.org/browse/JRUBY-4084
Project: JRuby
Issue Type: Bug
Components: Core Classes/Modules
Affects Versions: JRuby 1.4.0RC1
Reporter: Sam Aaron
Working with the enumerable methods on arrays containing strings created by
splicing can raise a Java Exception
["1", "11"].map{|i| i.each_char.to_a.map{|i| i == "1"}} #=> works just dandy
["1"[0..1], "1111111"[5..6]].map{|i| i.each_char.to_a.map{|i| i == "1"}} #=>
BOOM
ByteList.java:514:in `equal': java.lang.ArrayIndexOutOfBoundsException: 10
from RubyString.java:884:in `op_equal'
from org/jruby/RubyString$i_method_1_0$RUBYINVOKER$op_equal.gen:-1:in
`call'
from CachingCallSite.java:147:in `call'
from CallOneArgNode.java:57:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:268:in `yield'
from Block.java:194:in `yield'
from RubyEnumerable.java:627:in `call'
from CallBlock.java:78:in `yield'
from Block.java:194:in `yield'
from RubyArray.java:1635:in `eachCommon'
from RubyArray.java:1642:in `each'
from org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in
`call'
from RubyClass.java:432:in `finvoke'
from RuntimeHelpers.java:390:in `invoke'
from RubyEnumerable.java:70:in `callEach'
from RubyEnumerable.java:624:in `collect'
from
org/jruby/RubyEnumerable$s_method_0_0$RUBYFRAMEDINVOKER$collect.gen:-1:in `call'
from CachingCallSite.java:116:in `callBlock'
from CachingCallSite.java:123:in `call'
from CallNoArgBlockNode.java:64:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:268:in `yield'
from Block.java:194:in `yield'
from RubyEnumerable.java:627:in `call'
from CallBlock.java:78:in `yield'
from Block.java:194:in `yield'
from RubyArray.java:1635:in `eachCommon'
from RubyArray.java:1642:in `each'
from org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen:-1:in
`call'
from RubyClass.java:432:in `finvoke'
from RuntimeHelpers.java:390:in `invoke'
from RubyEnumerable.java:70:in `callEach'
from RubyEnumerable.java:624:in `collect'
from
org/jruby/RubyEnumerable$s_method_0_0$RUBYFRAMEDINVOKER$collect.gen:-1:in `call'
from CachingCallSite.java:300:in `cacheAndCall'
from CachingCallSite.java:118:in `callBlock'
from CachingCallSite.java:123:in `call'
from CallNoArgBlockNode.java:64:in `interpret'
from NewlineNode.java:104:in `interpret'
from RootNode.java:129:in `interpret'
from ASTInterpreter.java:98:in `evalWithBinding'
from RubyKernel.java:966:in `eval'
from org/jruby/RubyKernel$s_method_0_3$RUBYFRAMEDINVOKER$eval.gen:-1:in
`call'
from DynamicMethod.java:150:in `call'
from CachingCallSite.java:280:in `cacheAndCall'
from CachingCallSite.java:69:in `call'
from FCallManyArgsNode.java:60:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedMethod.java:112:in `call'
from InterpretedMethod.java:124:in `call'
from DefaultMethod.java:144:in `call'
from CachingCallSite.java:280:in `cacheAndCall'
from CachingCallSite.java:69:in `call'
from CallManyArgsNode.java:59:in `interpret'
from FCallOneArgNode.java:36:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedMethod.java:210:in `call'
from DefaultMethod.java:185:in `call'
from CachingCallSite.java:330:in `cacheAndCall'
from CachingCallSite.java:189:in `call'
from CallTwoArgNode.java:59:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from RescueNode.java:225:in `executeBody'
from RescueNode.java:147:in `interpretWithJavaExceptions'
from RescueNode.java:110:in `interpret'
from BeginNode.java:83:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:251:in `yield'
from InterpretedBlock.java:185:in `yieldSpecific'
from Block.java:99:in `yieldSpecific'
from ZYieldNode.java:25:in `interpret'
from NewlineNode.java:104:in `interpret'
from EnsureNode.java:96:in `interpret'
from BeginNode.java:83:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedMethod.java:192:in `call'
from DefaultMethod.java:177:in `call'
from CachingCallSite.java:320:in `cacheAndCall'
from CachingCallSite.java:158:in `callBlock'
from CachingCallSite.java:173:in `callIter'
from FCallOneArgBlockNode.java:34:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:216:in `yieldSpecific'
from Block.java:117:in `yieldSpecific'
from YieldTwoNode.java:31:in `interpret'
from NewlineNode.java:104:in `interpret'
from IfNode.java:117:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from RescueNode.java:225:in `executeBody'
from RescueNode.java:147:in `interpretWithJavaExceptions'
from RescueNode.java:110:in `interpret'
from BeginNode.java:83:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:268:in `yield'
from Block.java:194:in `yield'
from RubyKernel.java:1182:in `loop_1_9'
from
org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.gen:-1:in `call'
from CachingCallSite.java:300:in `cacheAndCall'
from CachingCallSite.java:118:in `callBlock'
from CachingCallSite.java:133:in `callIter'
from FCallNoArgBlockNode.java:32:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:268:in `yield'
from Block.java:194:in `yield'
from RubyKernel.java:1014:in `rbCatch'
from
org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen:-1:in `call'
from CachingCallSite.java:320:in `cacheAndCall'
from CachingCallSite.java:158:in `callBlock'
from CachingCallSite.java:173:in `callIter'
from FCallOneArgBlockNode.java:34:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedMethod.java:155:in `call'
from DefaultMethod.java:161:in `call'
from CachingCallSite.java:300:in `cacheAndCall'
from CachingCallSite.java:118:in `callBlock'
from CachingCallSite.java:123:in `call'
from CallNoArgBlockNode.java:64:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedMethod.java:136:in `call'
from DefaultMethod.java:153:in `call'
from CachingCallSite.java:290:in `cacheAndCall'
from CachingCallSite.java:109:in `call'
from CallNoArgNode.java:61:in `interpret'
from NewlineNode.java:104:in `interpret'
from InterpretedBlock.java:317:in `evalBlockBody'
from InterpretedBlock.java:268:in `yield'
from Block.java:194:in `yield'
from RubyKernel.java:1014:in `rbCatch'
from
org/jruby/RubyKernel$s_method_1_0$RUBYFRAMEDINVOKER$rbCatch.gen:-1:in `call'
from CachingCallSite.java:320:in `cacheAndCall'
from CachingCallSite.java:158:in `callBlock'
from CachingCallSite.java:173:in `callIter'
from FCallOneArgBlockNode.java:34:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from InterpretedMethod.java:173:in `call'
from DefaultMethod.java:169:in `call'
from CachingCallSite.java:310:in `cacheAndCall'
from CachingCallSite.java:149:in `call'
from jirb:19:in `__file__'
from jirb:-1:in `load'
from Ruby.java:628:in `runScript'
from Ruby.java:550:in `runNormally'
from Ruby.java:396:in `runFromMain'
from Main.java:272:in `run'
from Main.java:117:in `run'
from Main.java:97:in `main'
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
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