From 679754f76f64dfdba81711d8ca55273dd177a0a9 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 2 May 2025 19:08:24 -0500 Subject: [PATCH 1/2] Pass end to byteListToInum rather than len See jruby/jruby#8823 --- ext/jruby/org/jruby/ext/strscan/RubyStringScanner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) { From cec68872582e85933b60e2a0588fbd1f739bf1dd Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 2 May 2025 19:16:27 -0500 Subject: [PATCH 2/2] Add a test for scan_integer at non-zero pos See jruby/jruby#8823 --- test/strscan/test_stringscanner.rb | 6 ++++++ 1 file changed, 6 insertions(+) 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