diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | enc/unicode.c | 13 |
2 files changed, 13 insertions, 5 deletions
@@ -1,3 +1,8 @@ +Mon Mar 28 14:54:49 2016 Martin Duerst <duerst@it.aoyama.ac.jp> + + * enc/unicode.c: Refactoring in preparation for data reduction for + titlecase. + Mon Mar 28 14:36:36 2016 Martin Duerst <duerst@it.aoyama.ac.jp> * enc/unicode.c: Minor refactoring for I WITH DOT ABOVE. diff --git a/enc/unicode.c b/enc/unicode.c index e51c2a1363..5c96448259 100644 --- a/enc/unicode.c +++ b/enc/unicode.c @@ -712,12 +712,15 @@ onigenc_unicode_case_map(OnigCaseFoldType* flagP, if (flags&OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_SPECIALS) { /* special */ OnigCodePoint *SpecialsStart = CaseMappingSpecials + OnigSpecialIndexDecode(folded->n); - if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) { /* Titlecase available */ - if (flags&ONIGENC_CASE_TITLECASE) { /* titlecase needed */ - if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_IS_TITLECASE) /* alread titlecase */ - flags ^= ONIGENC_CASE_MODIFIED; + if ((OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) /* titlecase available, */ + && (flags&ONIGENC_CASE_TITLECASE) /* AND titlecase needed, */ + && (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_IS_TITLECASE)) { /* BUT alread titlecase */ + flags ^= ONIGENC_CASE_MODIFIED; + goto SpecialsCopy; + } + else if (OnigCaseFoldFlags(folded->n)&ONIGENC_CASE_TITLECASE) { /* Titlecase available */ + if (flags&ONIGENC_CASE_TITLECASE) /* titlecase needed, but not yet titlecase */ goto SpecialsCopy; - } else /* Titlecase not needed */ SpecialsStart += SpecialsLengthExtract(*SpecialsStart); } |