MFH: r473974
devel/icu: fix toLocaleLowerCase() after r473551 PR: 229359 Obtained from: upstream (ICU 63.1) Approved by: ports-secteam blanket (required by Firefox and Chromium)
This commit is contained in:
parent
de6f99b4a4
commit
d7d6f22bce
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/branches/2018Q3/; revision=473975
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= icu
|
||||
DISTVERSION= 62_1
|
||||
PORTREVISION?= 0 # keep for icu-lx
|
||||
PORTREVISION?= 1 # keep for icu-lx
|
||||
PORTEPOCH?= 1
|
||||
CATEGORIES?= devel
|
||||
MASTER_SITES= http://download.icu-project.org/files/icu4c/${PORTVERSION}/ \
|
||||
|
|
77
devel/icu/files/patch-r41550
Normal file
77
devel/icu/files/patch-r41550
Normal file
|
@ -0,0 +1,77 @@
|
|||
https://ssl.icu-project.org/trac/ticket/13851
|
||||
|
||||
--- common/ucase.cpp.orig 2018-06-21 09:39:23 UTC
|
||||
+++ common/ucase.cpp
|
||||
@@ -270,6 +270,7 @@ ucase_addCaseClosure(UChar32 c, const USetAdder *sa) {
|
||||
}
|
||||
}
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_DELTA)) {
|
||||
+ pe=pe0;
|
||||
int32_t delta;
|
||||
GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe, delta);
|
||||
sa->add(sa->set, (excWord&UCASE_EXC_DELTA_IS_NEGATIVE)==0 ? c+delta : c-delta);
|
||||
@@ -1167,7 +1168,7 @@ ucase_toFullLower(UChar32 c,
|
||||
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_DELTA) && UCASE_IS_UPPER_OR_TITLE(props)) {
|
||||
int32_t delta;
|
||||
- GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe, delta);
|
||||
+ GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe2, delta);
|
||||
return (excWord&UCASE_EXC_DELTA_IS_NEGATIVE)==0 ? c+delta : c-delta;
|
||||
}
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_LOWER)) {
|
||||
@@ -1261,7 +1262,7 @@ toUpperOrTitle(UChar32 c,
|
||||
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_DELTA) && UCASE_GET_TYPE(props)==UCASE_LOWER) {
|
||||
int32_t delta;
|
||||
- GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe, delta);
|
||||
+ GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe2, delta);
|
||||
return (excWord&UCASE_EXC_DELTA_IS_NEGATIVE)==0 ? c+delta : c-delta;
|
||||
}
|
||||
if(!upperNotTitle && HAS_SLOT(excWord, UCASE_EXC_TITLE)) {
|
||||
@@ -1469,7 +1470,7 @@ ucase_toFullFolding(UChar32 c,
|
||||
}
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_DELTA) && UCASE_IS_UPPER_OR_TITLE(props)) {
|
||||
int32_t delta;
|
||||
- GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe, delta);
|
||||
+ GET_SLOT_VALUE(excWord, UCASE_EXC_DELTA, pe2, delta);
|
||||
return (excWord&UCASE_EXC_DELTA_IS_NEGATIVE)==0 ? c+delta : c-delta;
|
||||
}
|
||||
if(HAS_SLOT(excWord, UCASE_EXC_FOLD)) {
|
||||
--- test/intltest/strcase.cpp.orig 2018-06-21 09:38:41 UTC
|
||||
+++ test/intltest/strcase.cpp
|
||||
@@ -68,6 +68,7 @@ class StringCaseTest: public IntlTest { (public)
|
||||
void TestBug13127();
|
||||
void TestInPlaceTitle();
|
||||
void TestCaseMapEditsIteratorDocs();
|
||||
+ void TestCaseMapGreekExtended();
|
||||
|
||||
private:
|
||||
void assertGreekUpper(const char16_t *s, const char16_t *expected);
|
||||
@@ -113,6 +114,7 @@ StringCaseTest::runIndexedTest(int32_t index, UBool ex
|
||||
TESTCASE_AUTO(TestInPlaceTitle);
|
||||
#endif
|
||||
TESTCASE_AUTO(TestCaseMapEditsIteratorDocs);
|
||||
+ TESTCASE_AUTO(TestCaseMapGreekExtended);
|
||||
TESTCASE_AUTO_END;
|
||||
}
|
||||
|
||||
@@ -1683,6 +1685,19 @@ void StringCaseTest::TestCaseMapEditsIteratorDocs() {
|
||||
expectedSrcCoarseStringIndices[destIndex],
|
||||
coarseChangesIterator.sourceIndexFromDestinationIndex(destIndex, status));
|
||||
}
|
||||
+}
|
||||
+
|
||||
+void StringCaseTest::TestCaseMapGreekExtended() {
|
||||
+ // Ticket 13851
|
||||
+ UnicodeString s(u"\u1F80\u1F88\u1FFC");
|
||||
+ UnicodeString result(s);
|
||||
+ result.toLower(Locale::getRoot());
|
||||
+ assertEquals(u"lower", u"\u1F80\u1F80\u1FF3", result);
|
||||
+#if !UCONFIG_NO_BREAK_ITERATION
|
||||
+ result = s;
|
||||
+ result.toTitle(nullptr, Locale::getRoot());
|
||||
+ assertEquals(u"title", u"\u1F88\u1F80\u1FF3", result);
|
||||
+#endif
|
||||
}
|
||||
|
||||
//#endif
|
Loading…
Reference in New Issue
Block a user