Skip to content

Commit

Permalink
remove special processing for U+03B9/U+03BC/U+A64B
Browse files Browse the repository at this point in the history
* enc/unicode.c: Remove special processing for U+03B9/U+03BC/U+A64B
  (GREEK SMALL LETTERs IOTA/MU, CYRILLIC SMALL LETTER MONOGRAPH UK)
  from onigenc_unicode_case_map and simplify code.

* enc/unicode/case-folding.rb: Remove check for U+03B9/U+03BC/U+A64B.

This and the previous few related commits make sure that we won't hit
the equivalent of bug #12990 anymore for future updates of Unicode versions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
duerst committed Dec 4, 2016
1 parent 31fb4e3 commit 8baa73b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 18 deletions.
17 changes: 4 additions & 13 deletions enc/unicode.c
Expand Up @@ -768,19 +768,10 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP,
}
}
}
else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0) { /* data about character found in CaseUnfold_11_Table */
if (flags&OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
MODIFIED;
if (flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE)
code = folded->code[1];
else
code = folded->code[0];
}
else if ((flags&(ONIGENC_CASE_UPCASE))
&& (code==0x03B9||code==0x03BC||code==0xA64B)) { /* GREEK SMALL LETTERs IOTA/MU, */
MODIFIED; /* CYRILLIC SMALL LETTER MONOGRAPH UK */
code = folded->code[1];
}
else if ((folded = onigenc_unicode_unfold1_lookup(code)) != 0 /* data about character found in CaseUnfold_11_Table */
&& flags&OnigCaseFoldFlags(folded->n)) { /* needs and data availability match */
MODIFIED;
code = folded->code[(flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) ? 1 : 0];
}
}
to += ONIGENC_CODE_TO_MBC(enc, code, to);
Expand Down
6 changes: 1 addition & 5 deletions enc/unicode/case-folding.rb
Expand Up @@ -305,11 +305,7 @@ def flags(from, type, to)
when item.upper then flags += '|U'
when item.lower then flags += '|D'
else
unless from=='03B9' or from=='03BC' or from=='A64B'
# cf. code==0x03B9||code==0x03BC||code==0xA64B in enc/unicode.c,
# towards the end of function onigenc_unicode_case_map
raise "Unpredicted case 0 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/."
end
raise "Unpredicted case 0 in enc/unicode/case_folding.rb. Please contact https://bugs.ruby-lang.org/."
end
unless item.upper == item.title
if item.code == item.title
Expand Down

0 comments on commit 8baa73b

Please sign in to comment.