diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2020-03-07 09:38:30 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2020-03-07 09:38:30 +0000 |
commit | ca74f62a3abfa13c353737c74624d3ef00777036 (patch) | |
tree | ce40bef5c24f7b02a6f1a094aff0a989bde46235 | |
parent | 12c7321d758c736d42dbbd36c74628f7a243851e (diff) |
merge revision(s) 4f19666e8b144600e959e4673f79d63f98bd637d: [Backport #16508]
`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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | re.c | 1 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 4 | ||||
-rw-r--r-- | version.h | 6 |
3 files changed, 8 insertions, 3 deletions
@@ -1936,6 +1936,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 aafad0b6df..38147c7446 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 @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.6.6" #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 125 +#define RUBY_PATCHLEVEL 126 #define RUBY_RELEASE_YEAR 2020 -#define RUBY_RELEASE_MONTH 2 -#define RUBY_RELEASE_DAY 15 +#define RUBY_RELEASE_MONTH 3 +#define RUBY_RELEASE_DAY 7 #include "ruby/version.h" |