Resolves: rhbz#1271353 upgrade to ICU 56.1

This commit is contained in:
Eike Rathke 2015-10-27 18:56:04 +01:00
parent 5d46b1c13e
commit 1e01f588eb
8 changed files with 40 additions and 1484 deletions

View File

@ -1,6 +1,6 @@
diff -ru icu.orig/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdptst.c
--- icu.orig/source/test/cintltst/cnmdptst.c 2014-10-03 12:09:26.000000000 -0400
+++ icu/source/test/cintltst/cnmdptst.c 2015-09-18 12:18:27.585830495 -0400
diff -ur orig.icu/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdptst.c
--- orig.icu/source/test/cintltst/cnmdptst.c 2015-10-08 05:51:46.000000000 +0200
+++ icu/source/test/cintltst/cnmdptst.c 2015-10-27 19:40:27.537963317 +0100
@@ -185,6 +185,12 @@
/* Test exponential pattern*/
static void TestExponential(void)
@ -14,9 +14,9 @@ diff -ru icu.orig/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdp
int32_t pat_length, val_length, lval_length;
int32_t ival, ilval, p, v, lneed;
UNumberFormat *fmt;
diff -ru icu.orig/source/test/intltest/dcfmtest.cpp icu/source/test/intltest/dcfmtest.cpp
--- icu.orig/source/test/intltest/dcfmtest.cpp 2014-10-03 12:09:46.000000000 -0400
+++ icu/source/test/intltest/dcfmtest.cpp 2015-09-18 11:46:58.021362411 -0400
diff -ur orig.icu/source/test/intltest/dcfmtest.cpp icu/source/test/intltest/dcfmtest.cpp
--- orig.icu/source/test/intltest/dcfmtest.cpp 2015-10-08 05:52:10.000000000 +0200
+++ icu/source/test/intltest/dcfmtest.cpp 2015-10-27 19:40:27.537963317 +0100
@@ -279,6 +279,13 @@
//
formatLineMat.reset(testLine);
@ -31,10 +31,10 @@ diff -ru icu.orig/source/test/intltest/dcfmtest.cpp icu/source/test/intltest/dcf
execFormatTest(lineNum,
formatLineMat.group(1, status), // Pattern
formatLineMat.group(2, status), // rounding mode
diff -ru icu.orig/source/test/intltest/numfmtspectest.cpp icu/source/test/intltest/numfmtspectest.cpp
--- icu.orig/source/test/intltest/numfmtspectest.cpp 2014-10-03 12:09:46.000000000 -0400
+++ icu/source/test/intltest/numfmtspectest.cpp 2015-09-18 11:12:26.608857957 -0400
@@ -130,11 +130,14 @@
diff -ur orig.icu/source/test/intltest/numfmtspectest.cpp icu/source/test/intltest/numfmtspectest.cpp
--- orig.icu/source/test/intltest/numfmtspectest.cpp 2015-10-08 05:52:10.000000000 +0200
+++ icu/source/test/intltest/numfmtspectest.cpp 2015-10-27 19:41:47.660444972 +0100
@@ -137,11 +137,14 @@
void NumberFormatSpecificationTest::TestScientificNotation() {
assertPatternFr("1,23E4", 12345.0, "0.00E0", TRUE);
@ -49,16 +49,16 @@ diff -ru icu.orig/source/test/intltest/numfmtspectest.cpp icu/source/test/intlte
assertPatternFr("12,3E3", 12345.0, "##0.00E0", TRUE);
assertPatternFr("12,300E3", 12300.1, "##0.0000E0", TRUE);
assertPatternFr("12,30E3", 12300.1, "##0.000#E0", TRUE);
@@ -206,6 +209,8 @@
assertSuccess("", status);
assertEquals("", "USD (433.22)", result, TRUE);
@@ -221,6 +224,8 @@
assertEquals("", "USD (433.22)", result, TRUE);
}
}
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
+#if 0
const char *paddedSciPattern = "QU**00.#####E0";
assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE);
{
@@ -223,6 +228,7 @@
@@ -242,6 +247,7 @@
}
// padding cannot work as intended with scientific notation.
assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE);
@ -66,10 +66,10 @@ diff -ru icu.orig/source/test/intltest/numfmtspectest.cpp icu/source/test/intlte
}
void NumberFormatSpecificationTest::assertPatternFr(
diff -ru icu.orig/source/test/intltest/numfmtst.cpp icu/source/test/intltest/numfmtst.cpp
--- icu.orig/source/test/intltest/numfmtst.cpp 2014-10-03 12:09:48.000000000 -0400
+++ icu/source/test/intltest/numfmtst.cpp 2015-09-18 12:18:22.770220311 -0400
@@ -284,6 +284,12 @@
diff -ur orig.icu/source/test/intltest/numfmtst.cpp icu/source/test/intltest/numfmtst.cpp
--- orig.icu/source/test/intltest/numfmtst.cpp 2015-10-08 05:52:12.000000000 +0200
+++ icu/source/test/intltest/numfmtst.cpp 2015-10-27 19:40:27.539963329 +0100
@@ -729,6 +729,12 @@
void
NumberFormatTest::TestExponential(void)
{
@ -82,7 +82,7 @@ diff -ru icu.orig/source/test/intltest/numfmtst.cpp icu/source/test/intltest/num
UErrorCode status = U_ZERO_ERROR;
DecimalFormatSymbols sym(Locale::getUS(), status);
if (U_FAILURE(status)) { errcheckln(status, "FAIL: Bad status returned by DecimalFormatSymbols ct - %s", u_errorName(status)); return; }
@@ -1398,8 +1404,11 @@
@@ -1847,8 +1853,11 @@
(int32_t) 45678000, "5E7", status);
expect(new DecimalFormat("00E0", US, status),
(int32_t) 45678000, "46E6", status);

View File

@ -1,39 +0,0 @@
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

View File

@ -1,55 +0,0 @@
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

File diff suppressed because it is too large Load Diff

View File

@ -1,125 +0,0 @@
# https://ssl.icu-project.org/trac/changeset/37086
Index: icu/source/layout/ContextualSubstSubtables.cpp
===================================================================
--- icu/source/layout/ContextualSubstSubtables.cpp (revision 37085)
+++ icu/source/layout/ContextualSubstSubtables.cpp (revision 37086)
@@ -1,4 +1,4 @@
/*
- * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved
*
*/
@@ -467,4 +467,10 @@
(const ChainSubClassRuleTable *) ((char *) chainSubClassSetTable + chainSubClassRuleTableOffset);
le_uint16 backtrackGlyphCount = SWAPW(chainSubClassRuleTable->backtrackGlyphCount);
+
+ // TODO: Ticket #11557 - enable this check, originally from ticket #11525.
+ // Depends on other, more extensive, changes.
+ // LEReferenceToArrayOf<le_uint16> backtrackClassArray(base, success, chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount);
+ if( LE_FAILURE(success) ) { return 0; }
+
le_uint16 inputGlyphCount = SWAPW(chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount]) - 1;
const le_uint16 *inputClassArray = &chainSubClassRuleTable->backtrackClassArray[backtrackGlyphCount + 1];
Index: icu/source/layout/CursiveAttachmentSubtables.cpp
===================================================================
--- icu/source/layout/CursiveAttachmentSubtables.cpp (revision 37085)
+++ icu/source/layout/CursiveAttachmentSubtables.cpp (revision 37086)
@@ -1,4 +1,4 @@
/*
- * (C) Copyright IBM Corp. 1998 - 2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998 - 2015 - All Rights Reserved
*
*/
@@ -21,5 +21,8 @@
le_uint16 eeCount = SWAPW(entryExitCount);
- if (coverageIndex < 0 || coverageIndex >= eeCount) {
+ LEReferenceToArrayOf<EntryExitRecord>
+ entryExitRecordsArrayRef(base, success, entryExitRecords, coverageIndex);
+
+ if (coverageIndex < 0 || coverageIndex >= eeCount || LE_FAILURE(success)) {
glyphIterator->setCursiveGlyph();
return 0;
Index: icu/source/layout/Features.cpp
===================================================================
--- icu/source/layout/Features.cpp (revision 37085)
+++ icu/source/layout/Features.cpp (revision 37086)
@@ -2,5 +2,5 @@
* @(#)Features.cpp 1.4 00/03/15
*
- * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved
*
*/
@@ -16,4 +16,7 @@
LEReferenceTo<FeatureTable> FeatureListTable::getFeatureTable(const LETableReference &base, le_uint16 featureIndex, LETag *featureTag, LEErrorCode &success) const
{
+ LEReferenceToArrayOf<FeatureRecord>
+ featureRecordArrayRef(base, success, featureRecordArray, featureIndex);
+
if (featureIndex >= SWAPW(featureCount) || LE_FAILURE(success)) {
return LEReferenceTo<FeatureTable>();
Index: icu/source/layout/LETableReference.h
===================================================================
--- icu/source/layout/LETableReference.h (revision 37085)
+++ icu/source/layout/LETableReference.h (revision 37086)
@@ -2,5 +2,5 @@
* -*- c++ -*-
*
- * (C) Copyright IBM Corp. and others 2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. and others 2015 - All Rights Reserved
*
* Range checking
@@ -314,5 +314,10 @@
const T& getObject(le_uint32 i, LEErrorCode &success) const {
- return *getAlias(i,success);
+ const T *ret = getAlias(i, success);
+ if (LE_FAILURE(success) || ret==NULL) {
+ return *(new T(0));
+ } else {
+ return *ret;
+ }
}
Index: icu/source/layout/LigatureSubstSubtables.cpp
===================================================================
--- icu/source/layout/LigatureSubstSubtables.cpp (revision 37085)
+++ icu/source/layout/LigatureSubstSubtables.cpp (revision 37086)
@@ -1,4 +1,4 @@
/*
- * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved
*
*/
@@ -28,4 +28,7 @@
const LigatureTable *ligTable = (const LigatureTable *) ((char *)ligSetTable + ligTableOffset);
le_uint16 compCount = SWAPW(ligTable->compCount) - 1;
+ LEReferenceToArrayOf<TTGlyphID>
+ componentArrayRef(base, success, ligTable->componentArray, compCount);
+ if (LE_FAILURE(success)) { return 0; }
le_int32 startPosition = glyphIterator->getCurrStreamPosition();
TTGlyphID ligGlyph = SWAPW(ligTable->ligGlyph);
Index: icu/source/layout/MultipleSubstSubtables.cpp
===================================================================
--- icu/source/layout/MultipleSubstSubtables.cpp (revision 37085)
+++ icu/source/layout/MultipleSubstSubtables.cpp (revision 37086)
@@ -1,5 +1,5 @@
/*
*
- * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2015 - All Rights Reserved
*
*/
@@ -36,5 +36,10 @@
le_int32 coverageIndex = getGlyphCoverage(base, glyph, success);
le_uint16 seqCount = SWAPW(sequenceCount);
+ LEReferenceToArrayOf<Offset>
+ sequenceTableOffsetArrayRef(base, success, sequenceTableOffsetArray, seqCount);
+ if (LE_FAILURE(success)) {
+ return 0;
+ }
if (coverageIndex >= 0 && coverageIndex < seqCount) {
Offset sequenceTableOffset = SWAPW(sequenceTableOffsetArray[coverageIndex]);

View File

@ -1,11 +1,11 @@
Name: icu
Version: 54.1
Release: 5%{?dist}
Version: 56.1
Release: 1%{?dist}
Summary: International Components for Unicode
Group: Development/Tools
License: MIT and UCD and Public Domain
URL: http://www.icu-project.org/
Source0: http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz
Source0: http://download.icu-project.org/files/icu4c/56.1/icu4c-56_1-src.tgz
Source1: icu-config.sh
BuildRequires: doxygen, autoconf, python
Requires: lib%{name}%{?_isa} = %{version}-%{release}
@ -15,11 +15,7 @@ Patch2: icu.8800.freeserif.crash.patch
Patch3: icu.7601.Indic-ccmp.patch
Patch4: gennorm2-man.patch
Patch5: icuinfo-man.patch
Patch6: icu.changeset_36724.patch
Patch7: icu.changeset_36727.patch
Patch8: icu.changeset_36801.patch
Patch9: icu.changeset_37086.patch
Patch10: armv7hl-disable-tests.patch
Patch6: armv7hl-disable-tests.patch
%description
Tools and utilities for developing with icu.
@ -67,12 +63,8 @@ BuildArch: noarch
%patch3 -p1 -b .icu7601.Indic-ccmp.patch
%patch4 -p1 -b .gennorm2-man.patch
%patch5 -p1 -b .icuinfo-man.patch
%patch6 -p1 -b .icu.changeset_36724.patch
%patch7 -p1 -b .icu.changeset_36727.patch
%patch8 -p1 -b .icu.changeset_36801.patch
%patch9 -p1 -b .icu.changeset_37086.patch
%ifarch armv7hl
%patch10 -p1 -b .armv7hl-disable-tests.patch
%patch6 -p1 -b .armv7hl-disable-tests.patch
%endif
%build
@ -182,6 +174,9 @@ make %{?_smp_mflags} -C source check
%doc source/__docs/%{name}/html/*
%changelog
* Tue Oct 27 2015 Eike Rathke <erack@redhat.com> - 56.1-1
- Resolves: rhbz#1271353 upgrade to ICU 56.1
* Fri Sep 18 2015 Eike Rathke <erack@redhat.com> - 54.1-5
- Workaround rhbz#1239574 disabling offending tests on armv7hl

View File

@ -1,10 +1,11 @@
Description: supply manual page for program that doesn't have one
Author: Jay Berkenbilt <qjb@debian.org>
Bug: http://bugs.icu-project.org/trac/ticket/7665
erAck: adapted to ICU 56.1 icu/source/tools/icuinfo/Makefile.in
diff -r -u -N icu.orig/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in
--- icu.orig/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100
+++ icu/source/tools/icuinfo/icuinfo.1.in 2013-02-25 16:51:23.387606462 +0100
diff -Nur orig.icu/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in
--- orig.icu/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100
+++ icu/source/tools/icuinfo/icuinfo.1.in 2015-10-27 19:19:35.184056800 +0100
@@ -0,0 +1,76 @@
+.\" Hey, Emacs! This is -*-nroff-*- you know...
+.\"
@ -82,9 +83,9 @@ diff -r -u -N icu.orig/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinf
+Print the current UTC time in milliseconds.
+.SH COPYRIGHT
+Copyright (C) 2010 International Business Machines Corporation and others
diff -r -u -N icu.orig/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in
--- icu.orig/source/tools/icuinfo/Makefile.in 2013-01-11 01:23:34.000000000 +0100
+++ icu/source/tools/icuinfo/Makefile.in 2013-02-25 16:51:20.637590947 +0100
diff -Nur orig.icu/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in
--- orig.icu/source/tools/icuinfo/Makefile.in 2015-10-08 05:53:56.000000000 +0200
+++ icu/source/tools/icuinfo/Makefile.in 2015-10-27 19:23:19.115509906 +0100
@@ -14,8 +14,15 @@
## Build directory information
subdir = tools/icuinfo
@ -131,13 +132,14 @@ diff -r -u -N icu.orig/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo
dist-local:
clean-local:
@@ -95,6 +107,9 @@
plugin-check: $(PLUGIN) $(PLUGINFILE)
$(INVOKE) ICU_PLUGINS="$(CURR_FULL_DIR)" ./$(TARGET) -v -L
@@ -103,6 +115,10 @@
@echo "Plugins are disabled (use --enable-plugins to enable)"
endif
+%.$(SECTION): $(srcdir)/%.$(SECTION).in
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
ifeq (,$(MAKECMDGOALS))
-include $(DEPS)
else

View File

@ -1,2 +1,2 @@
e844caed8f2ca24c088505b0d6271bc0 icu4c-54_1-src.tgz
c4a2d71ff56aec5ebfab2a3f059be99d icu4c-56_1-src.tgz
d0cd9a661a7afb5f9a82bbc6a7897930 icu-config.sh