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


Reply via email to