summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--re.c2
-rw-r--r--test/ruby/test_regexp.rb1
2 files changed, 2 insertions, 1 deletions
diff --git a/re.c b/re.c
index a4cd2e39b9..e7c5487655 100644
--- a/re.c
+++ b/re.c
@@ -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