Kaydet (Commit) 5b7e8efb authored tarafından Eike Rathke's avatar Eike Rathke

Upgrade to ICU 56.1

Change-Id: Icc3d66c16fca95aa890aee6c67c84674fef878fc
üst 84017530
......@@ -8920,7 +8920,7 @@ SYSTEM_GENBRK=
SYSTEM_GENCCODE=
SYSTEM_GENCMN=
ICU_MAJOR=54
ICU_MAJOR=56
ICU_MINOR=1
ICU_RECLASSIFIED_CLOSE_PARENTHESIS="TRUE"
ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
......
......@@ -58,7 +58,7 @@ export HARFBUZZ_TARBALL := harfbuzz-0.9.40.tar.bz2
export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 4967da60b23413604c9e563beacc63b4-hunspell-1.3.3.tar.gz
export HYPHEN_TARBALL := 5ade6ae2a99bc1e9e57031ca88d36dad-hyphen-2.8.8.tar.gz
export ICU_TARBALL := e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz
export ICU_TARBALL := c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz
export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
export JFREEREPORT_FLUTE_TARBALL := d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
export JFREEREPORT_LIBBASE_TARBALL := eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
......
......@@ -23,13 +23,8 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
external/icu/icu-ubsan.patch.0 \
external/icu/icu4c-icu11100.patch.1 \
external/icu/icu4c-scriptrun.patch \
external/icu/icu4c-icu11451.patch.1 \
external/icu/rtti.patch.0 \
external/icu/icu.changeset_36724.patch.1 \
external/icu/icu.changeset_36727.patch.1 \
external/icu/icu.changeset_36801.patch.1 \
$(if $(filter-out ANDROID,$(OS)),external/icu/icu4c-icudata-stdlibs.diff) \
external/icu/icu.vc15.patch \
$(if $(filter EMSCRIPTEN,$(OS)),external/icu/icu4c-emscripten.patch.1) \
))
......
......@@ -162,14 +162,3 @@
}
virtual UBool operator == (const CacheKeyBase &other) const {
// reflexive
--- source/common/uresbund.cpp
+++ source/common/uresbund.cpp
@@ -53,7 +53,7 @@
UHashTok namekey, pathkey;
namekey.pointer = b->fName;
pathkey.pointer = b->fPath;
- return uhash_hashChars(namekey)+37*uhash_hashChars(pathkey);
+ return uhash_hashChars(namekey)+37U*uhash_hashChars(pathkey);
}
/* INTERNAL: compares two entries */
Index: icu/source/i18n/regexcmp.cpp
===================================================================
--- icu/source/i18n/regexcmp.cpp (revision 36723)
+++ icu/source/i18n/regexcmp.cpp (revision 36724)
@@ -2136,4 +2136,8 @@
int32_t minML = minMatchLength(fMatchOpenParen, patEnd);
int32_t maxML = maxMatchLength(fMatchOpenParen, patEnd);
+ if (URX_TYPE(maxML) != 0) {
+ error(U_REGEX_LOOK_BEHIND_LIMIT);
+ break;
+ }
if (maxML == INT32_MAX) {
error(U_REGEX_LOOK_BEHIND_LIMIT);
@@ -2169,4 +2173,8 @@
int32_t minML = minMatchLength(fMatchOpenParen, patEnd);
int32_t maxML = maxMatchLength(fMatchOpenParen, patEnd);
+ if (URX_TYPE(maxML) != 0) {
+ error(U_REGEX_LOOK_BEHIND_LIMIT);
+ break;
+ }
if (maxML == INT32_MAX) {
error(U_REGEX_LOOK_BEHIND_LIMIT);
Index: icu/source/test/testdata/regextst.txt
===================================================================
--- icu/source/test/testdata/regextst.txt (revision 36723)
+++ icu/source/test/testdata/regextst.txt (revision 36724)
@@ -1201,4 +1201,12 @@
"A|B|\U00012345" "hello <0>\U00012345</0>"
"A|B|\U00010000" "hello \ud800"
+
+# Bug 11370
+# Max match length computation of look-behind expression gives result that is too big to fit in the
+# in the 24 bit operand portion of the compiled code. Expressions should fail to compile
+# (Look-behind match length must be bounded. This case is treated as unbounded, an error.)
+
+"(?<!(0123456789a){10000000})x" E "no match"
+"(?<!\\ubeaf(\\ubeaf{11000}){11000})" E "no match"
# Random debugging, Temporary
Index: icu/source/i18n/regexcmp.cpp
===================================================================
--- icu/source/i18n/regexcmp.cpp (revision 36726)
+++ icu/source/i18n/regexcmp.cpp (revision 36727)
@@ -2340,5 +2340,13 @@
if (fIntervalUpper == 0) {
// Pathological case. Attempt no matches, as if the block doesn't exist.
+ // Discard the generated code for the block.
+ // If the block included parens, discard the info pertaining to them as well.
fRXPat->fCompiledPat->setSize(topOfBlock);
+ if (fMatchOpenParen >= topOfBlock) {
+ fMatchOpenParen = -1;
+ }
+ if (fMatchCloseParen >= topOfBlock) {
+ fMatchCloseParen = -1;
+ }
return TRUE;
}
Index: icu/source/i18n/regexcmp.h
===================================================================
--- icu/source/i18n/regexcmp.h (revision 36726)
+++ icu/source/i18n/regexcmp.h (revision 36727)
@@ -188,5 +188,7 @@
// of the slot reserved for a state save
// at the start of the most recently processed
- // parenthesized block.
+ // parenthesized block. Updated when processing
+ // a close to the location for the corresponding open.
+
int32_t fMatchCloseParen; // The position in the pattern of the first
// location after the most recently processed
Index: icu/source/test/testdata/regextst.txt
===================================================================
--- icu/source/test/testdata/regextst.txt (revision 36726)
+++ icu/source/test/testdata/regextst.txt (revision 36727)
@@ -1202,4 +1202,13 @@
"A|B|\U00010000" "hello \ud800"
+# Bug 11369
+# Incorrect optimization of patterns with a zero length quantifier {0}
+
+"(.|b)(|b){0}\$(?#xxx){3}(?>\D*)" "AAAAABBBBBCCCCCDDDDEEEEE"
+"(|b)ab(c)" "<0><1></1>ab<2>c</2></0>"
+"(|b){0}a{3}(D*)" "<0>aaa<2></2></0>"
+"(|b){0,1}a{3}(D*)" "<0><1></1>aaa<2></2></0>"
+"((|b){0})a{3}(D*)" "<0><1></1>aaa<3></3></0>"
+
# Bug 11370
# Max match length computation of look-behind expression gives result that is too big to fit in the
@@ -1209,4 +1218,5 @@
"(?<!(0123456789a){10000000})x" E "no match"
"(?<!\\ubeaf(\\ubeaf{11000}){11000})" E "no match"
+
# Random debugging, Temporary
This diff is collapsed.
--- misc/icu/source/io/ufile.c 2015-07-04 19:08:35.889168902 +0200
+++ misc/build/icu/source/io/ufile.c 2015-07-04 19:12:43.040185494 +0200
@@ -66,7 +66,9 @@
#if U_PLATFORM_USES_ONLY_WIN32_API
if (0 <= result->fFileno && result->fFileno <= 2) {
/* stdin, stdout and stderr need to be special cased for Windows 98 */
-#if _MSC_VER >= 1400
+#if _MSC_VER >= 1900
+ result->fFile = __acrt_iob_func(_fileno(f));
+#elif _MSC_VER >= 1400
result->fFile = &__iob_func()[_fileno(f)];
#else
result->fFile = &_iob[_fileno(f)];
--- icu/source/common/ubidi.c.orig 2014-12-19 10:23:38.103928414 +0000
+++ icu/source/common/ubidi.c 2014-12-19 10:26:58.370071527 +0000
@@ -2146,7 +2146,7 @@
/* The isolates[] entries contain enough information to
resume the bidi algorithm in the same state as it was
when it was interrupted by an isolate sequence. */
- if(dirProps[start]==PDI) {
+ if(dirProps[start]==PDI && pBiDi->isolateCount >= 0) {
levState.startON=pBiDi->isolates[pBiDi->isolateCount].startON;
start1=pBiDi->isolates[pBiDi->isolateCount].start1;
stateImp=pBiDi->isolates[pBiDi->isolateCount].stateImp;
......@@ -1582,6 +1582,32 @@ void SubsetMap::InitList()
aAllSubsets.push_back( Subset( 0x118A0, 0x118FF, RID_SUBSETSTR_WARANG_CITI ) );
break;
#endif
#if U_ICU_VERSION_MAJOR_NUM >= 56
/* FIXME: add RID_... to include/svx/ucsubset.hrc and
* strings to svx/source/dialog/ucsubset.src and Unicode
* block ranges to aAllSubsets, for now this only
* compiles.. */
case UBLOCK_AHOM:
break;
case UBLOCK_ANATOLIAN_HIEROGLYPHS:
break;
case UBLOCK_CHEROKEE_SUPPLEMENT:
break;
case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E:
break;
case UBLOCK_EARLY_DYNASTIC_CUNEIFORM:
break;
case UBLOCK_HATRAN:
break;
case UBLOCK_MULTANI:
break;
case UBLOCK_OLD_HUNGARIAN:
break;
case UBLOCK_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS:
break;
case UBLOCK_SUTTON_SIGNWRITING:
break;
#endif
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment