summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--re.c1
-rw-r--r--test/ruby/test_regexp.rb4
2 files changed, 5 insertions, 0 deletions
diff --git a/re.c b/re.c
index b15c3a07a8..9e9df700cf 100644
--- a/re.c
+++ b/re.c
@@ -1905,6 +1905,7 @@ match_captures(VALUE match)
static int
name_to_backref_number(struct re_registers *regs, VALUE regexp, const char* name, const char* name_end)
{
+ if (NIL_P(regexp)) return -1;
return onig_name_to_backref_number(RREGEXP_PTR(regexp),
(const unsigned char *)name, (const unsigned char *)name_end, regs);
}
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index a1d49c595a..b469d643f2 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -161,6 +161,10 @@ class TestRegexp < Test::Unit::TestCase
s = "foo"
s[/(?<bar>o)/, "bar"] = "baz"
assert_equal("fbazo", s)
+
+ /.*/ =~ "abc"
+ "a".sub("a", "")
+ assert_raise(IndexError) {Regexp.last_match(:_id)}
end
def test_named_capture_with_nul