diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-02-25 07:48:31 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-02-25 07:48:31 +0000 |
commit | bf524be10c1fbc28e59d11d17fc7147f53129cb5 (patch) | |
tree | 46b3543720ecd6cb3b610d1df30215c1b4cb128c | |
parent | 616b11e2464c160729e0bf9525f28e9574d3d1d2 (diff) |
merge revision(s) 53167: [Backport #11825]
* re.c (reg_names_iter): should consider encoding of regexp.
[ruby-core:72185] [Bug #11825]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@53920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | re.c | 2 | ||||
-rw-r--r-- | test/ruby/test_regexp.rb | 6 | ||||
-rw-r--r-- | version.h | 10 |
4 files changed, 17 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Thu Feb 25 16:46:37 2016 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * re.c (reg_names_iter): should consider encoding of regexp. + [ruby-core:72185] [Bug #11825] + Wed Dec 23 14:13:59 2015 NAKAMURA Usaku <usa@ruby-lang.org> * version.h: bump to 2.1.9. may this version be the last of 2.1. @@ -759,7 +759,7 @@ reg_names_iter(const OnigUChar *name, const OnigUChar *name_end, int back_num, int *back_refs, OnigRegex regex, void *arg) { VALUE ary = (VALUE)arg; - rb_ary_push(ary, rb_str_new((const char *)name, name_end-name)); + rb_ary_push(ary, rb_enc_str_new((const char *)name, name_end-name, regex->enc)); return 0; } diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index bef770b923..8223a143b3 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -119,13 +119,19 @@ class TestRegexp < Test::Unit::TestCase assert_equal(nil, Regexp.last_match(1)) assert_equal(nil, Regexp.last_match(:foo)) + bug11825_name = "\u{5b9d 77f3}" + bug11825_str = "\u{30eb 30d3 30fc}" + bug11825_re = /(?<#{bug11825_name}>)#{bug11825_str}/ + assert_equal(["foo", "bar"], /(?<foo>.)(?<bar>.)/.names) assert_equal(["foo"], /(?<foo>.)(?<foo>.)/.names) assert_equal([], /(.)(.)/.names) + assert_equal([bug11825_name], bug11825_re.names) assert_equal(["foo", "bar"], /(?<foo>.)(?<bar>.)/.match("ab").names) assert_equal(["foo"], /(?<foo>.)(?<foo>.)/.match("ab").names) assert_equal([], /(.)(.)/.match("ab").names) + assert_equal([bug11825_name], bug11825_re.match(bug11825_str).names) assert_equal({"foo"=>[1], "bar"=>[2]}, /(?<foo>.)(?<bar>.)/.named_captures) @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.1.9" -#define RUBY_RELEASE_DATE "2015-12-23" -#define RUBY_PATCHLEVEL 441 +#define RUBY_RELEASE_DATE "2016-02-25" +#define RUBY_PATCHLEVEL 442 -#define RUBY_RELEASE_YEAR 2015 -#define RUBY_RELEASE_MONTH 12 -#define RUBY_RELEASE_DAY 23 +#define RUBY_RELEASE_YEAR 2016 +#define RUBY_RELEASE_MONTH 2 +#define RUBY_RELEASE_DAY 25 #include "ruby/version.h" |