diff options
-rw-r--r-- | re.c | 2 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 1 |
2 files changed, 2 insertions, 1 deletions
@@ -2159,7 +2159,7 @@ match_aref(int argc, VALUE *argv, VALUE match) else if (beg > num_regs) { return Qnil; } - else if (beg+len > num_regs) { + if (beg+len > num_regs) { len = num_regs - beg; } return match_ary_subseq(match, beg, len, Qnil); diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index 7f787f99f5..4e840f23ad 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -488,6 +488,7 @@ class TestRegexp < Test::Unit::TestCase assert_nil(m[5]) assert_raise(IndexError) { m[:foo] } assert_raise(TypeError) { m[nil] } + assert_equal(["baz", nil], m[-2, 3]) end def test_match_values_at |