Details
-
Type:
Bug
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: JRuby 1.7.0.pre1
-
Fix Version/s: JRuby 1.7.0.pre2
-
Component/s: None
-
Labels:None
-
Number of attachments :
Description
Strange java.lang.ArrayIndexOutOfBoundsException raised in String#each_line with specifying a separator.
$ jruby -v -e '"a".each_line("ab") { |x| p x }'
jruby 1.7.0.preview1 (ruby-1.9.3-p203) (2012-05-19 00c8c98) (OpenJDK 64-Bit Server VM 1.6.0_20) [linux-amd64-java]
ByteList.java:1291:in `memcmp': java.lang.ArrayIndexOutOfBoundsException: 1
from RubyString.java:7095:in `each_lineCommon19'
from RubyString.java:7020:in `each_line19'
from RubyString$INVOKER$i$each_line19.gen:-1:in `call'
from CachingCallSite.java:322:in `cacheAndCall'
from CachingCallSite.java:178:in `callBlock'
from CachingCallSite.java:187:in `callIter'
from -e:1:in `__file__'
from -e:-1:in `load'
from Ruby.java:778:in `runScript'
from Ruby.java:771:in `runScript'
from Ruby.java:648:in `runNormally'
from Ruby.java:497:in `runFromMain'
from Main.java:375:in `doRunFromMain'
from Main.java:264:in `internalRun'
from Main.java:230:in `run'
from Main.java:214:in `run'
from Main.java:194:in `main'
Oops, some Ruby code is recognized as text markup in the above...
$ jruby -v -e '"a".each_line("ab") do |x| p x; end'
jruby 1.7.0.preview1 (ruby-1.9.3-p203) (2012-05-19 00c8c98) (OpenJDK 64-Bit Server VM 1.6.0_20) [linux-amd64-java]
ByteList.java:1291:in `memcmp': java.lang.ArrayIndexOutOfBoundsException: 1
from RubyString.java:7095:in `each_lineCommon19'
from RubyString.java:7020:in `each_line19'
from RubyString$INVOKER$i$each_line19.gen:-1:in `call'
from CachingCallSite.java:322:in `cacheAndCall'
from CachingCallSite.java:178:in `callBlock'
from CachingCallSite.java:187:in `callIter'
from -e:1:in `_file_'
from -e:-1:in `load'
from Ruby.java:778:in `runScript'
from Ruby.java:771:in `runScript'
from Ruby.java:648:in `runNormally'
from Ruby.java:497:in `runFromMain'
from Main.java:375:in `doRunFromMain'
from Main.java:264:in `internalRun'
from Main.java:230:in `run'
from Main.java:214:in `run'
from Main.java:194:in `main'
In MRI, it works.
$ ruby -v -e '"a".each_line("ab") do |x| p x; end'
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
"a"