From 2ace9ef5a3b9d5ff9f5eccf7bdd893dd2aee0b48 Mon Sep 17 00:00:00 2001 From: duerst Date: Mon, 28 Mar 2016 05:54:47 +0000 Subject: * enc/unicode.c: Refactoring in preparation for data reduction for titlecase. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enc/unicode.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'enc/unicode.c') 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); } -- cgit v1.2.3