1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

merge revision(s) 54210: [Backport #12204]

* string.c (enc_succ_alnum_char): try to skip an invalid character
	  gap between GREEK CAPITAL RHO and SIGMA.
	  [ruby-core:74478] [Bug #12204]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@54336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2016-03-28 16:41:15 +00:00
parent 00e452101b
commit 305dd08c5a
4 changed files with 23 additions and 6 deletions

View file

@ -1,3 +1,9 @@
Tue Mar 29 01:41:10 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
* string.c (enc_succ_alnum_char): try to skip an invalid character
gap between GREEK CAPITAL RHO and SIGMA.
[ruby-core:74478] [Bug #12204]
Tue Mar 29 01:27:52 2016 Victor Nawothnig <Victor.Nawothnig@gmail.com>
* parse.y (parse_numvar): NTH_REF must be less than a half of

View file

@ -3241,6 +3241,10 @@ enc_succ_alnum_char(char *p, long len, rb_encoding *enc, char *carry)
int range;
char save[ONIGENC_CODE_TO_MBC_MAXLEN];
/* skip 03A2, invalid char between GREEK CAPITAL LETTERS */
int try;
const int max_gaps = 1;
c = rb_enc_mbc_to_codepoint(p, p+len, enc);
if (rb_enc_isctype(c, ONIGENC_CTYPE_DIGIT, enc))
ctype = ONIGENC_CTYPE_DIGIT;
@ -3250,11 +3254,13 @@ enc_succ_alnum_char(char *p, long len, rb_encoding *enc, char *carry)
return NEIGHBOR_NOT_CHAR;
MEMCPY(save, p, char, len);
ret = enc_succ_char(p, len, enc);
if (ret == NEIGHBOR_FOUND) {
c = rb_enc_mbc_to_codepoint(p, p+len, enc);
if (rb_enc_isctype(c, ctype, enc))
return NEIGHBOR_FOUND;
for (try = 0; try <= max_gaps; ++try) {
ret = enc_succ_char(p, len, enc);
if (ret == NEIGHBOR_FOUND) {
c = rb_enc_mbc_to_codepoint(p, p+len, enc);
if (rb_enc_isctype(c, ctype, enc))
return NEIGHBOR_FOUND;
}
}
MEMCPY(p, save, char, len);
range = 1;

View file

@ -1632,4 +1632,9 @@ class TestM17N < Test::Unit::TestCase
assert_match(escape_plain, 0x5b.chr(::Encoding::UTF_8), bug10670)
assert_match(escape_plain, 0x5b.chr, bug10670)
end
def test_greek_capital_gap
bug12204 = '[ruby-core:74478] [Bug #12204] GREEK CAPITAL RHO and SIGMA'
assert_equal("\u03A3", "\u03A1".succ, bug12204)
end
end

View file

@ -1,6 +1,6 @@
#define RUBY_VERSION "2.2.5"
#define RUBY_RELEASE_DATE "2016-03-29"
#define RUBY_PATCHLEVEL 278
#define RUBY_PATCHLEVEL 279
#define RUBY_RELEASE_YEAR 2016
#define RUBY_RELEASE_MONTH 3