diff --git a/ext/jruby/org/jruby/ext/strscan/RubyStringScanner.java b/ext/jruby/org/jruby/ext/strscan/RubyStringScanner.java index c0b654dd50..6e6501f15f 100644 --- a/ext/jruby/org/jruby/ext/strscan/RubyStringScanner.java +++ b/ext/jruby/org/jruby/ext/strscan/RubyStringScanner.java @@ -651,7 +651,7 @@ private RubyInteger strscanParseInteger(Ruby runtime, ByteList bytes, int ptr, i setMatched(); adjustRegisters(); - return ConvertBytes.byteListToInum(runtime, bytes, ptr, len, base, true); + return ConvertBytes.byteListToInum(runtime, bytes, ptr, ptr + len, base, true); } private void strscanMustAsciiCompat(Ruby runtime) { diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb index e895a8382b..109f8e1f9a 100644 --- a/test/strscan/test_stringscanner.rb +++ b/test/strscan/test_stringscanner.rb @@ -1006,6 +1006,12 @@ def test_scan_integer assert_equal(huge_integer.to_i, s.scan_integer) assert_equal(2_000, s.pos) assert_predicate(s, :matched?) + + s = create_string_scanner('abc1') + s.pos = 3 + assert_equal(1, s.scan_integer) + assert_equal(4, s.pos) + assert_predicate(s, :matched?) end def test_scan_integer_unmatch