aboutsummaryrefslogtreecommitdiffstats
path: root/re.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 11:25:43 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 11:32:11 +0900
commit4f19666e8b144600e959e4673f79d63f98bd637d (patch)
tree00f9f406d2e8fd33f40c0a41701fe49674bf41ae /re.c
parent815807d2ab9e87b5543d6837234952fd6cd481a3 (diff)
downloadruby-4f19666e8b144600e959e4673f79d63f98bd637d.tar.gz
`Regexp` in `MatchData` can be `nil`
`String#sub` with a string pattern defers creating a `Regexp` until `MatchData#regexp` creates a `Regexp` from the matched string. `Regexp#last_match(group_name)` accessed its content without creating the `Regexp` though. [Bug #16508]
Diffstat (limited to 're.c')
-rw-r--r--re.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/re.c b/re.c
index 3efd540359..44418ec064 100644
--- a/re.c
+++ b/re.c
@@ -1912,6 +1912,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);
}