From d127ccbb32ed4eb21c3268d4f7f9ea1be1168f20 Mon Sep 17 00:00:00 2001 From: James Antill Date: Thu, 26 May 2022 09:48:55 -0400 Subject: [PATCH] Auto sync2gitlab import of icu-60.3-2.el8_1.src.rpm --- .gitignore | 1 + EMPTY | 1 - ...-integer-overflow-logic-to-ICU4C-num.patch | 108 +++ ICU-20958-Prevent-SEGV_MAPERR-in-append.patch | 103 +++ armv7hl-disable-tests.patch | 96 +++ gennorm2-man.patch | 128 +++ icu-config.sh | 11 + icu-covscan.patch | 171 ++++ icu.spec | 764 ++++++++++++++++++ icuinfo-man.patch | 145 ++++ negative-daylight-savings.patch | 154 ++++ sources | 1 + 12 files changed, 1682 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 EMPTY create mode 100644 ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch create mode 100644 ICU-20958-Prevent-SEGV_MAPERR-in-append.patch create mode 100644 armv7hl-disable-tests.patch create mode 100644 gennorm2-man.patch create mode 100644 icu-config.sh create mode 100644 icu-covscan.patch create mode 100644 icu.spec create mode 100644 icuinfo-man.patch create mode 100644 negative-daylight-savings.patch create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..346fa30 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/icu4c-60_3-src.tgz diff --git a/EMPTY b/EMPTY deleted file mode 100644 index 0519ecb..0000000 --- a/EMPTY +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch b/ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch new file mode 100644 index 0000000..8a4ceed --- /dev/null +++ b/ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch @@ -0,0 +1,108 @@ +From 23d76d88630ecee02515e2c8f5c8769cc795ae23 Mon Sep 17 00:00:00 2001 +From: Shane Carr +Date: Fri, 23 Mar 2018 00:56:16 +0000 +Subject: [PATCH] ICU-13634 Adding integer overflow logic to ICU4C number + pipeline in places where it is in ICU4J. + +X-SVN-Rev: 41136 + +diff --git a/icu4c/source/common/putil.cpp b/icu4c/source/common/putil.cpp +index 83f08ac070..452e2fd79c 100644 +--- a/icu4c/source/common/putil.cpp ++++ b/icu4c/source/common/putil.cpp +@@ -533,6 +533,30 @@ uprv_fmin(double x, double y) + return (x > y ? y : x); + } + ++#include ++ ++U_CAPI UBool U_EXPORT2 ++uprv_add32_overflow(int32_t a, int32_t b, int32_t* res) { ++ // NOTE: Some compilers (GCC, Clang) have primitives available, like __builtin_add_overflow. ++ // This function could be optimized by calling one of those primitives. ++ auto a64 = static_cast(a); ++ auto b64 = static_cast(b); ++ int64_t res64 = a64 + b64; ++ *res = static_cast(res64); ++ return res64 != *res; ++} ++ ++U_CAPI UBool U_EXPORT2 ++uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res) { ++ // NOTE: Some compilers (GCC, Clang) have primitives available, like __builtin_mul_overflow. ++ // This function could be optimized by calling one of those primitives. ++ auto a64 = static_cast(a); ++ auto b64 = static_cast(b); ++ int64_t res64 = a64 * b64; ++ *res = static_cast(res64); ++ return res64 != *res; ++} ++ + /** + * Truncates the given double. + * trunc(3.3) = 3.0, trunc (-3.3) = -3.0 +diff --git a/icu4c/source/common/putilimp.h b/icu4c/source/common/putilimp.h +index eb9b5380f1..8b858df9e3 100644 +--- a/icu4c/source/common/putilimp.h ++++ b/icu4c/source/common/putilimp.h +@@ -391,6 +391,32 @@ U_INTERNAL double U_EXPORT2 uprv_log(double d); + */ + U_INTERNAL double U_EXPORT2 uprv_round(double x); + ++/** ++ * Adds the signed integers a and b, storing the result in res. ++ * Checks for signed integer overflow. ++ * Similar to the GCC/Clang extension __builtin_add_overflow ++ * ++ * @param a The first operand. ++ * @param b The second operand. ++ * @param res a + b ++ * @return true if overflow occurred; false if no overflow occurred. ++ * @internal ++ */ ++U_INTERNAL UBool U_EXPORT2 uprv_add32_overflow(int32_t a, int32_t b, int32_t* res); ++ ++/** ++ * Multiplies the signed integers a and b, storing the result in res. ++ * Checks for signed integer overflow. ++ * Similar to the GCC/Clang extension __builtin_mul_overflow ++ * ++ * @param a The first multiplicand. ++ * @param b The second multiplicand. ++ * @param res a * b ++ * @return true if overflow occurred; false if no overflow occurred. ++ * @internal ++ */ ++U_INTERNAL UBool U_EXPORT2 uprv_mul32_overflow(int32_t a, int32_t b, int32_t* res); ++ + #if 0 + /** + * Returns the number of digits after the decimal point in a double number x. +diff --git a/icu4c/source/test/cintltst/putiltst.c b/icu4c/source/test/cintltst/putiltst.c +index b99d9fca9c..1c3e073041 100644 +--- a/icu4c/source/test/cintltst/putiltst.c ++++ b/icu4c/source/test/cintltst/putiltst.c +@@ -128,6 +128,20 @@ static void TestPUtilAPI(void){ + log_err("ERROR: uprv_isInfinite failed.\n"); + } + ++ log_verbose("Testing the APIs uprv_add32_overflow and uprv_mul32_overflow\n"); ++ int32_t overflow_result; ++ doAssert(FALSE, uprv_add32_overflow(INT32_MAX - 2, 1, &overflow_result), "should not overflow"); ++ doAssert(INT32_MAX - 1, overflow_result, "should equal INT32_MAX - 1"); ++ doAssert(FALSE, uprv_add32_overflow(INT32_MAX - 2, 2, &overflow_result), "should not overflow"); ++ doAssert(INT32_MAX, overflow_result, "should equal exactly INT32_MAX"); ++ doAssert(TRUE, uprv_add32_overflow(INT32_MAX - 2, 3, &overflow_result), "should overflow"); ++ doAssert(FALSE, uprv_mul32_overflow(INT32_MAX / 5, 4, &overflow_result), "should not overflow"); ++ doAssert(INT32_MAX / 5 * 4, overflow_result, "should equal INT32_MAX / 5 * 4"); ++ doAssert(TRUE, uprv_mul32_overflow(INT32_MAX / 5, 6, &overflow_result), "should overflow"); ++ // Test on negative numbers: ++ doAssert(FALSE, uprv_add32_overflow(-3, -2, &overflow_result), "should not overflow"); ++ doAssert(-5, overflow_result, "should equal -5"); ++ + #if 0 + log_verbose("Testing the API uprv_digitsAfterDecimal()....\n"); + doAssert(uprv_digitsAfterDecimal(value1), 3, "uprv_digitsAfterDecimal() failed."); +-- +2.24.1 + diff --git a/ICU-20958-Prevent-SEGV_MAPERR-in-append.patch b/ICU-20958-Prevent-SEGV_MAPERR-in-append.patch new file mode 100644 index 0000000..adf88fc --- /dev/null +++ b/ICU-20958-Prevent-SEGV_MAPERR-in-append.patch @@ -0,0 +1,103 @@ +diff -ru icu/source/common/unistr.cpp icu.new/source/common/unistr.cpp +--- icu/source/common/unistr.cpp 2019-04-12 00:26:16.000000000 +0200 ++++ icu.new/source/common/unistr.cpp 2020-03-03 15:39:37.069874709 +0100 +@@ -1544,7 +1544,11 @@ + } + + int32_t oldLength = length(); +- int32_t newLength = oldLength + srcLength; ++ int32_t newLength; ++ if (uprv_add32_overflow(oldLength, srcLength, &newLength)) { ++ setToBogus(); ++ return *this; ++ } + // optimize append() onto a large-enough, owned string + if((newLength <= getCapacity() && isBufferWritable()) || + cloneArrayIfNeeded(newLength, getGrowCapacity(newLength))) { +diff -ru icu/source/test/intltest/ustrtest.cpp icu.new/source/test/intltest/ustrtest.cpp +--- icu/source/test/intltest/ustrtest.cpp 2019-04-12 00:26:16.000000000 +0200 ++++ icu.new/source/test/intltest/ustrtest.cpp 2020-03-03 15:44:59.059239188 +0100 +@@ -64,6 +64,7 @@ + TESTCASE_AUTO(TestUInt16Pointers); + TESTCASE_AUTO(TestWCharPointers); + TESTCASE_AUTO(TestNullPointers); ++ TESTCASE_AUTO(TestLargeAppend); + TESTCASE_AUTO_END; + } + +@@ -2248,3 +2249,64 @@ + UnicodeString(u"def").extract(nullptr, 0, errorCode); + assertEquals("buffer overflow extracting to nullptr", U_BUFFER_OVERFLOW_ERROR, errorCode); + } ++ ++void UnicodeStringTest::TestLargeAppend() { ++ if(quick) return; ++ ++ IcuTestErrorCode status(*this, "TestLargeAppend"); ++ // Make a large UnicodeString ++ int32_t len = 0xAFFFFFF; ++ UnicodeString str; ++ char16_t *buf = str.getBuffer(len); ++ // A fast way to set buffer to valid Unicode. ++ // 4E4E is a valid unicode character ++ uprv_memset(buf, 0x4e, len * 2); ++ str.releaseBuffer(len); ++ UnicodeString dest; ++ // Append it 16 times ++ // 0xAFFFFFF times 16 is 0xA4FFFFF1, ++ // which is greater than INT32_MAX, which is 0x7FFFFFFF. ++ int64_t total = 0; ++ for (int32_t i = 0; i < 16; i++) { ++ dest.append(str); ++ total += len; ++ if (total <= INT32_MAX) { ++ assertFalse("dest is not bogus", dest.isBogus()); ++ } else { ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } ++ } ++ dest.remove(); ++ total = 0; ++ for (int32_t i = 0; i < 16; i++) { ++ dest.append(str); ++ total += len; ++ if (total + len <= INT32_MAX) { ++ assertFalse("dest is not bogus", dest.isBogus()); ++ } else if (total <= INT32_MAX) { ++ // Check that a string of exactly the maximum size works ++ UnicodeString str2; ++ int32_t remain = INT32_MAX - total; ++ char16_t *buf2 = str2.getBuffer(remain); ++ if (buf2 == nullptr) { ++ // if somehow memory allocation fail, return the test ++ return; ++ } ++ uprv_memset(buf2, 0x4e, remain * 2); ++ str2.releaseBuffer(remain); ++ dest.append(str2); ++ total += remain; ++ assertEquals("When a string of exactly the maximum size works", (int64_t)INT32_MAX, total); ++ assertEquals("When a string of exactly the maximum size works", INT32_MAX, dest.length()); ++ assertFalse("dest is not bogus", dest.isBogus()); ++ ++ // Check that a string size+1 goes bogus ++ str2.truncate(1); ++ dest.append(str2); ++ total++; ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } else { ++ assertTrue("dest should be bogus", dest.isBogus()); ++ } ++ } ++} +diff -ru icu/source/test/intltest/ustrtest.h icu.new/source/test/intltest/ustrtest.h +--- icu/source/test/intltest/ustrtest.h 2019-04-12 00:26:16.000000000 +0200 ++++ icu.new/source/test/intltest/ustrtest.h 2020-03-03 15:45:36.147935611 +0100 +@@ -96,6 +96,7 @@ + void TestUInt16Pointers(); + void TestWCharPointers(); + void TestNullPointers(); ++ void TestLargeAppend(); + }; + + #endif diff --git a/armv7hl-disable-tests.patch b/armv7hl-disable-tests.patch new file mode 100644 index 0000000..2d869b1 --- /dev/null +++ b/armv7hl-disable-tests.patch @@ -0,0 +1,96 @@ +diff -ru orig.icu/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdptst.c +--- orig.icu/source/test/cintltst/cnmdptst.c 2016-03-23 21:48:18.000000000 +0100 ++++ icu/source/test/cintltst/cnmdptst.c 2016-04-15 18:34:06.148251985 +0200 +@@ -186,6 +186,12 @@ + /* Test exponential pattern*/ + static void TestExponential(void) + { ++/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */ ++#if 1 ++ /* Actually only 3 tests fail, but given the nested structure depending on ++ * array sizes there's no simple "disable this and that". */ ++ return; ++#endif + int32_t pat_length, val_length, lval_length; + int32_t ival, ilval, p, v, lneed; + UNumberFormat *fmt; +diff -ru orig.icu/source/test/intltest/dcfmtest.cpp icu/source/test/intltest/dcfmtest.cpp +--- orig.icu/source/test/intltest/dcfmtest.cpp 2016-03-23 21:48:38.000000000 +0100 ++++ icu/source/test/intltest/dcfmtest.cpp 2016-04-15 18:34:06.148251985 +0200 +@@ -279,6 +279,13 @@ + // + formatLineMat.reset(testLine); + if (formatLineMat.lookingAt(status)) { ++/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */ ++#if 1 ++// [Formattable] file dcfmtest.txt, line 62: expected "12.35E5", got "1.235E6" ++// [StringPiece] file dcfmtest.txt, line 62: expected "12.35E5", got "1.235E6" ++ if (lineNum == 62) ++ continue; ++#endif + execFormatTest(lineNum, + formatLineMat.group(1, status), // Pattern + formatLineMat.group(2, status), // rounding mode +diff -ru orig.icu/source/test/intltest/numfmtspectest.cpp icu/source/test/intltest/numfmtspectest.cpp +--- orig.icu/source/test/intltest/numfmtspectest.cpp 2016-03-23 21:48:40.000000000 +0100 ++++ icu/source/test/intltest/numfmtspectest.cpp 2016-04-15 18:34:06.148251985 +0200 +@@ -137,11 +137,14 @@ + + void NumberFormatSpecificationTest::TestScientificNotation() { + assertPatternFr("1,23E4", 12345.0, "0.00E0", TRUE); ++/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */ ++#if 0 + assertPatternFr("123,00E2", 12300.0, "000.00E0", TRUE); + assertPatternFr("123,0E2", 12300.0, "000.0#E0", TRUE); + assertPatternFr("123,0E2", 12300.1, "000.0#E0", TRUE); + assertPatternFr("123,01E2", 12301.0, "000.0#E0", TRUE); + assertPatternFr("123,01E+02", 12301.0, "000.0#E+00", TRUE); ++#endif + 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); +@@ -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); + { +@@ -242,6 +247,7 @@ + } + // padding cannot work as intended with scientific notation. + assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE); ++#endif + } + + void NumberFormatSpecificationTest::assertPatternFr( +diff -ru orig.icu/source/test/intltest/numfmtst.cpp icu/source/test/intltest/numfmtst.cpp +--- orig.icu/source/test/intltest/numfmtst.cpp 2016-03-23 21:48:40.000000000 +0100 ++++ icu/source/test/intltest/numfmtst.cpp 2016-04-15 18:34:06.150251997 +0200 +@@ -730,6 +730,12 @@ + void + NumberFormatTest::TestExponential(void) + { ++/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */ ++#if 1 ++ /* Actually only 3 tests fail, but given the nested structure depending on ++ * array sizes there's no simple "disable this and that". */ ++ return; ++#endif + 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; } +@@ -1846,8 +1852,11 @@ + (int32_t) 45678000, "5E7", status); + expect(new DecimalFormat("00E0", US, status), + (int32_t) 45678000, "46E6", status); ++/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */ ++#if 0 + expect(new DecimalFormat("000E0", US, status), + (int32_t) 45678000, "457E5", status); ++#endif + /* + expect(new DecimalFormat("###E0", US, status), + new Object[] { new Double(0.0000123), "12.3E-6", diff --git a/gennorm2-man.patch b/gennorm2-man.patch new file mode 100644 index 0000000..07b5b9d --- /dev/null +++ b/gennorm2-man.patch @@ -0,0 +1,128 @@ +Description: supply manual page for program that doesn't have one +Author: Jay Berkenbilt +Bug: http://bugs.icu-project.org/trac/ticket/7554 + +diff -r -u -N icu.orig/source/tools/gennorm2/gennorm2.8.in icu/source/tools/gennorm2/gennorm2.8.in +--- icu.orig/source/tools/gennorm2/gennorm2.8.in 1970-01-01 01:00:00.000000000 +0100 ++++ icu/source/tools/gennorm2/gennorm2.8.in 2013-02-25 16:43:28.297062638 +0100 +@@ -0,0 +1,71 @@ ++.\" Hey, Emacs! This is -*-nroff-*- you know... ++.\" ++.\" gennorm2.8: manual page for the gennorm2 utility ++.\" ++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others ++.\" ++.TH GENNORM2 8 "15 March 2010" "ICU MANPAGE" "ICU @VERSION@ Manual" ++.SH NAME ++.B gennorm2 ++\- Builds binary data file with Unicode normalization data. ++.SH SYNOPSIS ++.B gennorm2 ++[ ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++] ++[ ++.BR "\-V\fP, \fB\-\-version" ++] ++[ ++.BR "\-c\fP, \fB\-\-copyright" ++] ++[ ++.BR "\-v\fP, \fB\-\-verbose" ++] ++[ ++.BI "\-u\fP, \fB\-\-unicode" " unicode\-version\-number" ++] ++[ ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++] ++[ ++.BI "\-o\fP, \fB\-\-output" " output\-filename" ++] ++.BI "\fB\-\-fast" ++.SH DESCRIPTION ++.B gennorm2 ++reads text files that define Unicode normalization, ++them, and builds a binary data file. ++.SH OPTIONS ++.TP ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++Print help about usage and exit. ++.TP ++.BR "\-V\fP, \fB\-\-version" ++Print the version of ++.B gennorm2 ++and exit. ++.TP ++.BR "\-c\fP, \fB\-\-copyright" ++Include a copyright notice. ++.TP ++.BR "\-v\fP, \fB\-\-verbose" ++Display extra informative messages during execution. ++.TP ++.BR "\-u\fP, \fB\-\-unicode" ++Specify Unicode version number, such as 5.2.0. ++.TP ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++Specify the input directory. ++.TP ++.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory" ++Set the name of the output file. ++.TP ++.BI "\fB\-\-fast" ++optimize the .nrm file for fast normalization, ++which might increase its size (Writes fully decomposed ++regular mappings instead of delta mappings. ++You should measure the runtime speed to make sure that ++this is a good trade-off.) ++.SH COPYRIGHT ++Copyright (C) 2009-2010 International Business Machines Corporation and others +diff -r -u -N icu.orig/source/tools/gennorm2/Makefile.in icu/source/tools/gennorm2/Makefile.in +--- icu.orig/source/tools/gennorm2/Makefile.in 2013-01-11 01:23:32.000000000 +0100 ++++ icu/source/tools/gennorm2/Makefile.in 2013-02-25 16:43:28.296062632 +0100 +@@ -16,8 +16,13 @@ + + TARGET_STUB_NAME = gennorm2 + ++SECTION = 8 ++ ++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) ++ ++ + ## Extra files to remove for 'make clean' +-CLEANFILES = *~ $(DEPS) ++CLEANFILES = *~ $(DEPS) $(MAN_FILES) + + ## Target information + TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT) +@@ -44,12 +49,16 @@ + dist: dist-local + check: all check-local + +-all-local: $(TARGET) ++all-local: $(TARGET) $(MAN_FILES) + +-install-local: all-local ++install-local: all-local install-man + $(MKINSTALLDIRS) $(DESTDIR)$(sbindir) + $(INSTALL) $(TARGET) $(DESTDIR)$(sbindir) + ++install-man: $(MAN_FILES) ++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) ++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) ++ + dist-local: + + clean-local: +@@ -70,6 +79,11 @@ + $(POST_BUILD_STEP) + + ++%.$(SECTION): $(srcdir)/%.$(SECTION).in ++ cd $(top_builddir) \ ++ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ++ ++ + ifeq (,$(MAKECMDGOALS)) + -include $(DEPS) + else diff --git a/icu-config.sh b/icu-config.sh new file mode 100644 index 0000000..2659186 --- /dev/null +++ b/icu-config.sh @@ -0,0 +1,11 @@ +#!/bin/sh +OOO_ARCH=$(uname -m) +case $OOO_ARCH in + x86_64 | s390x | ppc64 | sparc64 | aarch64 | ppc64le | mips64 | mips64el) + bits=64 + ;; + * ) + bits=32 + ;; +esac +exec icu-config-$bits "$@" diff --git a/icu-covscan.patch b/icu-covscan.patch new file mode 100644 index 0000000..2796407 --- /dev/null +++ b/icu-covscan.patch @@ -0,0 +1,171 @@ +diff -urN icu.old/source/common/uloc_keytype.cpp icu/source/common/uloc_keytype.cpp +--- icu.old/source/common/uloc_keytype.cpp 2017-02-01 01:21:30.000000000 +0530 ++++ icu/source/common/uloc_keytype.cpp 2018-09-23 18:48:04.414990551 +0530 +@@ -383,6 +383,7 @@ + LocExtKeyData* keyData = (LocExtKeyData*)uprv_malloc(sizeof(LocExtKeyData)); + if (keyData == NULL) { + sts = U_MEMORY_ALLOCATION_ERROR; ++ uprv_free(typeDataMap); + break; + } + keyData->bcpId = bcpKeyId; +diff -urN icu.old/source/common/uloc_tag.cpp icu/source/common/uloc_tag.cpp +--- icu.old/source/common/uloc_tag.cpp 2017-10-11 21:54:34.000000000 +0530 ++++ icu/source/common/uloc_tag.cpp 2018-09-23 18:48:58.207182317 +0530 +@@ -2145,6 +2145,7 @@ + + error: + ultag_close(t); ++ uprv_free(pExtension); + return NULL; + } + +diff -urN icu.old/source/i18n/olsontz.cpp icu/source/i18n/olsontz.cpp +--- icu.old/source/i18n/olsontz.cpp 2017-02-01 01:21:27.000000000 +0530 ++++ icu/source/i18n/olsontz.cpp 2018-09-23 18:52:02.140418739 +0530 +@@ -787,6 +787,7 @@ + if (historicRules[typeIdx] == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; + deleteTransitionRules(); ++ uprv_free(times); + return; + } + } +diff -urN icu.old/source/i18n/rbt_pars.cpp icu/source/i18n/rbt_pars.cpp +--- icu.old/source/i18n/rbt_pars.cpp 2017-02-01 01:21:27.000000000 +0530 ++++ icu/source/i18n/rbt_pars.cpp 2018-09-23 18:52:51.362679180 +0530 +@@ -557,6 +557,7 @@ + // The next character MUST be a segment open + if (single == NULL || + !ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) { ++ uprv_free(single); + return syntaxError(U_INVALID_FUNCTION, rule, start, status); + } + +diff -urN icu.old/source/i18n/tznames_impl.cpp icu/source/i18n/tznames_impl.cpp +--- icu.old/source/i18n/tznames_impl.cpp 2017-10-11 21:54:34.000000000 +0530 ++++ icu/source/i18n/tznames_impl.cpp 2018-09-23 18:55:36.222152997 +0530 +@@ -1762,6 +1762,7 @@ + UResourceBundle* rbTable = NULL; + rbTable = ures_getByKey(rb, key, rbTable, &status); + if (U_FAILURE(status)) { ++ uprv_free(rbTable); + return NULL; + } + +@@ -1784,6 +1785,7 @@ + if (names != NULL) { + uprv_free(names); + } ++ uprv_free(rbTable); + return NULL; + } + +diff -urN icu.old/source/i18n/usearch.cpp icu/source/i18n/usearch.cpp +--- icu.old/source/i18n/usearch.cpp 2017-02-01 01:21:27.000000000 +0530 ++++ icu/source/i18n/usearch.cpp 2018-09-23 18:54:34.752103865 +0530 +@@ -222,6 +222,7 @@ + int32_t *temp = (int32_t *)allocateMemory( + sizeof(int32_t) * newlength, status); + if (U_FAILURE(*status)) { ++ uprv_free(temp); + return NULL; + } + uprv_memcpy(temp, destination, sizeof(int32_t) * (size_t)offset); +@@ -263,6 +264,7 @@ + sizeof(int64_t) * newlength, status); + + if (U_FAILURE(*status)) { ++ uprv_free(temp); + return NULL; + } + +diff -urN icu.old/source/tools/ctestfw/ctest.c icu/source/tools/ctestfw/ctest.c +--- icu.old/source/tools/ctestfw/ctest.c 2017-02-01 01:21:30.000000000 +0530 ++++ icu/source/tools/ctestfw/ctest.c 2018-09-23 18:19:43.612734248 +0530 +@@ -803,6 +803,7 @@ + } + va_start(ap, pattern); + vlog_err(NULL, pattern, ap); ++ va_end(ap); + } + + UBool T_CTEST_EXPORT2 +@@ -810,6 +811,7 @@ + va_list ap; + va_start(ap, pattern); + return vlog_knownIssue(ticket, pattern, ap); ++ va_end(ap); + } + + void T_CTEST_EXPORT2 +@@ -843,6 +845,7 @@ + } + vlog_err(NULL, pattern, ap); /* no need for prefix in default case */ + } ++ va_end(ap); + } + + void T_CTEST_EXPORT2 +@@ -852,6 +855,7 @@ + + va_start(ap, pattern); + vlog_info(NULL, pattern, ap); ++ va_end(ap); + } + + void T_CTEST_EXPORT2 +@@ -861,6 +865,7 @@ + + va_start(ap, pattern); + vlog_verbose(NULL, pattern, ap); ++ va_end(ap); + } + + +@@ -882,6 +887,7 @@ + } else { + vlog_info("[DATA] ", pattern, ap); + } ++ va_end(ap); + } + + +diff -urN icu.old/source/tools/gensprep/store.c icu/source/tools/gensprep/store.c +--- icu.old/source/tools/gensprep/store.c 2017-02-08 00:27:35.000000000 +0530 ++++ icu/source/tools/gensprep/store.c 2018-09-23 17:42:52.262908882 +0530 +@@ -634,7 +634,6 @@ + cleanUpData(void) { + uprv_free(mappingData); + utrie_close(sprepTrie); +- uprv_free(sprepTrie); + } + + #endif /* #if !UCONFIG_NO_IDNA */ +diff -urN icu.old/source/tools/pkgdata/pkgdata.cpp icu/source/tools/pkgdata/pkgdata.cpp +--- icu.old/source/tools/pkgdata/pkgdata.cpp 2017-03-23 04:56:34.000000000 +0530 ++++ icu/source/tools/pkgdata/pkgdata.cpp 2018-09-23 17:40:19.730240502 +0530 +@@ -1531,11 +1531,11 @@ + gencFilePath); + + result = runCommand(cmd); +- uprv_free(cmd); + if (result != 0) { + fprintf(stderr, "Error creating with assembly code. Failed command: %s\n", cmd); + return result; + } ++ uprv_free(cmd); + + return pkg_generateLibraryFile(targetDir, mode, tempObjectFile); + } +diff -urN icu.old/source/tools/toolutil/filetools.cpp icu/source/tools/toolutil/filetools.cpp +--- icu.old/source/tools/toolutil/filetools.cpp 2017-02-01 01:21:30.000000000 +0530 ++++ icu/source/tools/toolutil/filetools.cpp 2018-09-23 16:09:47.949491516 +0530 +@@ -64,6 +64,7 @@ + newpath.append(dirEntry->d_name, -1, status); + if (U_FAILURE(status)) { + fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, u_errorName(status)); ++ free(pDir); + return FALSE; + }; + diff --git a/icu.spec b/icu.spec new file mode 100644 index 0000000..ce0c5f2 --- /dev/null +++ b/icu.spec @@ -0,0 +1,764 @@ +#%%global debugtrace 1 + +Name: icu +Version: 60.3 +Release: 2%{?dist} +Summary: International Components for Unicode + +License: MIT and UCD and Public Domain +URL: http://site.icu-project.org/ +Source0: https://github.com/unicode-org/icu/releases/download/release-60-3/icu4c-60_3-src.tgz +Source1: icu-config.sh + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: doxygen, autoconf, python3 +Requires: lib%{name}%{?_isa} = %{version}-%{release} + +Patch4: gennorm2-man.patch +Patch5: icuinfo-man.patch +Patch6: negative-daylight-savings.patch +Patch100: armv7hl-disable-tests.patch +Patch101: icu-covscan.patch +Patch200: ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch +Patch201: ICU-20958-Prevent-SEGV_MAPERR-in-append.patch + +%description +Tools and utilities for developing with icu. + +%package -n lib%{name} +Summary: International Components for Unicode - libraries + +%description -n lib%{name} +The International Components for Unicode (ICU) libraries provide +robust and full-featured Unicode services on a wide variety of +platforms. ICU supports the most current version of the Unicode +standard, and they provide support for supplementary Unicode +characters (needed for GB 18030 repertoire support). +As computing environments become more heterogeneous, software +portability becomes more important. ICU lets you produce the same +results across all the various platforms you support, without +sacrificing performance. It offers great flexibility to extend and +customize the supplied services. + +%package -n lib%{name}-devel +Summary: Development files for International Components for Unicode +Requires: lib%{name}%{?_isa} = %{version}-%{release} +Requires: pkgconfig + +%description -n lib%{name}-devel +Includes and definitions for developing with icu. + +%package -n lib%{name}-doc +Summary: Documentation for International Components for Unicode +BuildArch: noarch + +%description -n lib%{name}-doc +%{summary}. + +%{!?endian: %global endian %(%{__python3} -c "import sys;print (0 if sys.byteorder=='big' else 1)")} +# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal + + +%prep +%setup -q -n %{name} +%patch4 -p1 -b .gennorm2-man.patch +%patch5 -p1 -b .icuinfo-man.patch +%patch6 -p1 -b .negative-daylight-savings.patch +%ifarch armv7hl +%patch100 -p1 -b .armv7hl-disable-tests.patch +%endif +%patch101 -p1 -b .covscan +%patch200 -p2 -b .ICU-13634 +%patch201 -p1 -b .ICU-20958 + +%build +pushd source +autoconf +CFLAGS='%optflags -fno-strict-aliasing' +CXXFLAGS='%optflags -fno-strict-aliasing' +# Endian: BE=0 LE=1 +%if ! 0%{?endian} +CPPFLAGS='-DU_IS_BIG_ENDIAN=1' +%endif + +#rhbz856594 do not use --disable-renaming or cope with the mess +OPTIONS='--with-data-packaging=library --disable-samples' +%if 0%{?debugtrace} +OPTIONS=$OPTIONS' --enable-debug --enable-tracing' +%endif +%configure $OPTIONS CC=gcc CXX=g++ + +#rhbz#225896 +sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux +#rhbz#813484 +sed -i 's| \$(docfilesdir)/installdox||' Makefile +# There is no source/doc/html/search/ directory +sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile +# rhbz#856594 The configure --disable-renaming and possibly other options +# result in icu/source/uconfig.h.prepend being created, include that content in +# icu/source/common/unicode/uconfig.h to propagate to consumer packages. +test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r uconfig.h.prepend' -i common/unicode/uconfig.h + +# more verbosity for build.log +sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile + +make %{?_smp_mflags} VERBOSE=1 +make %{?_smp_mflags} doc + + +%install +rm -rf $RPM_BUILD_ROOT source/__docs +make %{?_smp_mflags} -C source install DESTDIR=$RPM_BUILD_ROOT +make %{?_smp_mflags} -C source install-doc docdir=__docs +chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so.* +( + cd $RPM_BUILD_ROOT%{_bindir} + mv icu-config icu-config-%{__isa_bits} +) +install -p -m755 -D %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/icu-config + + +%check +# test to ensure that -j(X>1) didn't "break" man pages. b.f.u #2357 +if grep -q @VERSION@ source/tools/*/*.8 source/tools/*/*.1 source/config/*.1; then + exit 1 +fi +%ifarch i686 +# F26 since the mass rebuild in 2017-Feb fails a check, ignore error. TODO: find cause / disable only one. +make %{?_smp_mflags} -C source check ||: +%else +make %{?_smp_mflags} -C source check +%endif + +# log available codes +pushd source +LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:$LD_LIBRARY_PATH bin/uconv -l + + +%post -n lib%{name} -p /sbin/ldconfig + +%postun -n lib%{name} -p /sbin/ldconfig + + +%files +%license license.html +%exclude %{_datadir}/%{name}/*/LICENSE +%{_bindir}/derb +%{_bindir}/genbrk +%{_bindir}/gencfu +%{_bindir}/gencnval +%{_bindir}/gendict +%{_bindir}/genrb +%{_bindir}/makeconv +%{_bindir}/pkgdata +%{_bindir}/uconv +%{_sbindir}/* +%{_mandir}/man1/derb.1* +%{_mandir}/man1/gencfu.1* +%{_mandir}/man1/gencnval.1* +%{_mandir}/man1/gendict.1* +%{_mandir}/man1/genrb.1* +%{_mandir}/man1/genbrk.1* +%{_mandir}/man1/makeconv.1* +%{_mandir}/man1/pkgdata.1* +%{_mandir}/man1/uconv.1* +%{_mandir}/man8/*.8* + +%files -n lib%{name} +%license LICENSE +%doc readme.html +%{_libdir}/*.so.* + +%files -n lib%{name}-devel +%license LICENSE +%doc source/samples/ +%{_bindir}/%{name}-config* +%{_bindir}/icuinfo +%{_mandir}/man1/%{name}-config.1* +%{_mandir}/man1/icuinfo.1* +%{_includedir}/unicode +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc +%{_libdir}/%{name} +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/%{version} +%{_datadir}/%{name}/%{version}/install-sh +%{_datadir}/%{name}/%{version}/mkinstalldirs +%{_datadir}/%{name}/%{version}/config + +%files -n lib%{name}-doc +%license LICENSE +%doc readme.html +%doc source/__docs/%{name}/html/* + + +%changelog +* Tue Mar 03 2020 Mike FABIAN - 60.3-2 +- Apply ICU-13634-Adding-integer-overflow-logic-to-ICU4C-num.patch +- Apply ICU-20958-Prevent-SEGV_MAPERR-in-append.patch +- Resolves: rhbz#1808238 + +* Tue May 07 2019 Mike FABIAN - 60.3-1 +- Update to 60.3 maintenance release including support for new Japanese era Reiwa (令和). +- Resolves: rhbz#1677093 + +* Thu Nov 15 2018 Parag Nemade - 60.2-7 +- Resolves:rh#1602551 - Fix specfile by adding compile options +- also add BuildRequires for gcc and gcc-c++ +- Correct the upstream URL + +* Sun Sep 23 2018 Parag Nemade - 60.2-6 +- Resolves:rh#1602551 - Fix some covscan issues + +* Thu Jun 28 2018 Mike FABIAN - 60.2-5 +- Drop Python2 build dependency, use Python3 instead +- Resolves: rhbz#1595790 + +* Thu May 31 2018 Mike FABIAN - 60.2-4 +- Add negative-daylight-savings.patch from upstream. + (see http://bugs.icu-project.org/trac/ticket/13566 and + http://bugs.icu-project.org/trac/changeset/40954) + +* Wed Feb 07 2018 Fedora Release Engineering - 60.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Dec 14 2017 Pete Walter - 60.2-1 +- Update to 60.2 + +* Thu Dec 14 2017 Eike Rathke - 60.1-2 +- Resolves: rhbz#1524820 CVE-2017-17484 + +* Thu Nov 30 2017 Pete Walter - 60.1-1 +- Update to 60.1 + +* Wed Nov 08 2017 Eike Rathke - 57.1-9 +- Resolves: rhbz#1510932 CVE-2017-14952 + +* Wed Aug 02 2017 Fedora Release Engineering - 57.1-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 57.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Apr 20 2017 Eike Rathke - 57.1-6 +- Resolves: rhbz#1444101 CVE-2017-7867 CVE-2017-7868 + +* Fri Feb 10 2017 Fedora Release Engineering - 57.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Nov 18 2016 Eike Rathke - 57.1-4 +- dist.rpmgrill: "Percent signs in specfile changelog should be escaped" + +* Fri Nov 18 2016 Eike Rathke - 57.1-3 +- Resolves: rhbz#1377362 CVE-2016-7415 + +* Tue Nov 01 2016 Eike Rathke - 57.1-2 +- Resolves: rhbz#1360340 CVE-2016-6293 + +* Fri Apr 15 2016 Eike Rathke - 57.1-1 +- upgrade to upstream ICU 57.1 + +* Tue Apr 05 2016 Eike Rathke - 56.1-7 +- make check failure is fatal again + +* Tue Apr 05 2016 Eike Rathke - 56.1-6 +- remove icu-56.1-codes-cache-extend.patch + +* Sun Feb 28 2016 Raphael Groner - 56.1-5 +- even more verbosity and debug output +- add path to extend ICU's internal cache of codes +- use license macro +- provide samples in devel subpackage +- modernize generally + +* Sat Feb 27 2016 Rex Dieter - 56.1-4 +- %%build: make VERBOSE=1 +- %%check: keep 'make check' non-fatal while investigating rhbz#1307633 + +* Sat Feb 06 2016 Caolán McNamara - 56.1-3 +- Resolves: rhbz#1307633 FTBFS, disable check to get build through for now + +* Thu Feb 04 2016 Fedora Release Engineering - 56.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Oct 27 2015 Eike Rathke - 56.1-1 +- Resolves: rhbz#1271353 upgrade to ICU 56.1 + +* Fri Sep 18 2015 Eike Rathke - 54.1-5 +- Workaround rhbz#1239574 disabling offending tests on armv7hl + +* Wed Jun 17 2015 Fedora Release Engineering - 54.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Apr 10 2015 Eike Rathke - 54.1-3 +- Resolves: rhbz#1190131 CVE-2014-7923 CVE-2014-7926 CVE-2014-9654 +- Resolves: rhbz#1184811 CVE-2014-6585 CVE-2014-6591 + +* Sat Feb 21 2015 Till Maas - 54.1-2 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Mon Jan 26 2015 Eike Rathke - 54.1-1 +- Resolves: rhbz#1185433 upgrade to upstream ICU 54.1 + +* Tue Aug 26 2014 Eike Rathke - 53.1-1 +- Resolves: rhbz#1130771 upgrade to upstream ICU 53.1 + +* Sat Aug 16 2014 Fedora Release Engineering - 52.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 13 2014 Eike Rathke - 52.1-3 +- Resolves: rhbz#1106793 bad 2-digit year test case + +* Sat Jun 07 2014 Fedora Release Engineering - 52.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Feb 11 2014 Eike Rathke - 52.1-1 +- upgrade to upstream ICU 52.1 +- Resolves: rhbz#1049265 icu-52.1 is available +- Resolves: rhbz#1050063 Trivial change to icu-config to support ppc64le +- drop icu-51-layout-fix-10107.tgz source +- drop integrated icu.10318.CVE-2013-2924_changeset_34076.patch +- drop integrated icu.10143.memory.leak.crash.patch + +* Wed Oct 09 2013 Eike Rathke - 50.1.2-10 +- Resolves: rhbz#1015594 CVE-2013-2924 use-after-free + +* Fri Oct 04 2013 Eike Rathke - 50.1.2-9 +- added %%{?_isa} to Requires for multi-arch systems + +* Sat Aug 03 2013 Fedora Release Engineering - 50.1.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 22 2013 Eike Rathke - 50.1.2-7 +- Resolves: rhbz#986814 install icu-config.sh from source2 + +* Wed Jul 17 2013 Eike Rathke - 50.1.2-6 +- Resolves: rhbz#966141 various flaws in Layout Engine font processing +- Resolves: rhbz#966077 aarch64 support for icu-config.sh wrapper + +* Mon Feb 25 2013 Eike Rathke - 50.1.2-5 +- added manpages for gennorm2 and icuinfo, rhbz#884035 related + +* Tue Feb 19 2013 Caolán McNamara - 50.1.2-4 +- Resolves: fdo#52519 crash on typing some Malayalam + +* Tue Jan 29 2013 Eike Rathke - 50.1.2-3 +- Resolves: rhbz#856594 roll back and build without --disable-renaming again + +* Mon Jan 28 2013 Eike Rathke - 50.1.2-2 +- Resolves: rhbz#856594 include content of icu/source/uconfig.h.prepend + +* Fri Jan 25 2013 Eike Rathke - 50.1.2-1 +- Update to 50.1.2 +- Resolves: rhbz#856594 to-do add --disable-renaming on next soname bump +- removed upstream applied icu.9283.regexcmp.crash.patch + +* Wed Sep 12 2012 Caolán McNamara - 49.1.1-7 +- Related: rhbz#856594 reenable icu symbol renaming + +* Wed Sep 12 2012 Caolán McNamara - 49.1.1-6 +- Resolves: rhbz#856594 disable icu symbol renaming + +* Fri Aug 31 2012 Tom Callaway - 49.1.1-5 +- apply upstream fix (bug 9283) for regexcmp crash causing Chromium segfaults + +* Thu Jul 19 2012 Fedora Release Engineering - 49.1.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jun 15 2012 Caolán McNamara - 49.1.1-3 +- probably parallel-build safe by now. Add a check for original breakage + +* Fri Jun 15 2012 Caolán McNamara - 49.1.1-2 +- Resolves: rhbz#804313 multi-lib pain + +* Thu Apr 19 2012 Eike Rathke - 49.1.1-1 +- Update to 49.1.1 + +* Thu Apr 19 2012 Eike Rathke - 4.8.1.1-3 +- Resolves: rhbz#813484 doxygen 1.8.0 does not provide installdox, omit from install + +* Mon Jan 30 2012 Jon Masters - 4.8.1.1-2 +- Correct reference to BZ681941, add temporary fix for ARM FTBFS side effect + +* Fri Jan 20 2012 Peter Robinson -4.8.1.1-1 +- Update to 4.8.1.1 + +* Fri Jan 13 2012 Fedora Release Engineering - 4.8.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 13 2011 Eike Rathke - 4.8.1-3 +- Resolves: rhbz#766542 CVE-2011-4599 Stack-based buffer overflow +- add icu.8984.CVE-2011-4599.patch + +* Mon Oct 24 2011 Caolán McNamara - 4.8.1-2 +- Resolves: rhbz#747193 try and enable ccmp for Indic fonts + +* Wed Sep 07 2011 Caolán McNamara - 4.8.1-1 +- Resolves: rhbz#681941 don't link unneccessary -lm, etc. +- add icu.8800.freeserif.crash.patch + +* Tue Mar 08 2011 Caolán McNamara - 4.6-2 +- Resolves: rhbz#681941 don't link unneccessary -lm, etc. + +* Mon Mar 07 2011 Caolán McNamara - 4.6-1 +- latest version +- upgrade includes a .pc now of its own, drop ours +- drop integrated icu.6995.kannada.patch +- drop integrated icu.7971.buildfix.patch +- drop integrated icu.7972.buildfix.patch +- drop integrated icu.7932.doublecompare.patch +- drop integrated icu.8011.buildfix.patch + +* Fri Feb 11 2011 Caolán McNamara - 4.4.2-8 +- Resolves: rhbz#674328 yet more ways that freeserif crashes libicu + +* Wed Feb 09 2011 Fedora Release Engineering - 4.4.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Feb 03 2011 Caolán McNamara - 4.4.2-6 +- Resolves: rhbz#674328 more ways that freeserif crashes libicu + +* Wed Feb 02 2011 Caolán McNamara - 4.4.2-5 +- Resolves: rhbz#674328 freeserif crashes libicu + +* Thu Jan 13 2011 Caolán McNamara - 4.4.2-4 +- Resolves: rhbz#669237 strip libicudata + +* Mon Nov 29 2010 Caolán McNamara - 4.4.2-3 +- Resolves: rhbz#657964 icu-config bindir returns sbindir + +* Thu Nov 25 2010 Caolán McNamara - 4.4.2-2 +- Resolves: rhbz#654200 revert icu#5431 + +* Mon Oct 04 2010 Caolán McNamara - 4.4.2-1 +- latest version + +* Wed Sep 29 2010 jkeating - 4.4.1-6 +- Rebuilt for gcc bug 634757 + +* Wed Sep 22 2010 Caolán McNamara - 4.4.1-5 +- upstream patches + +* Thu Sep 09 2010 Caolán McNamara - 4.4.1-4 +- Resolves: rhbz#631403 doxygen no longer generates gifs + +* Thu Jul 08 2010 Caolán McNamara - 4.4.1-3 +- move licences into libicu, and add them into the -doc subpackage + as well + +* Wed May 26 2010 Caolán McNamara - 4.4.1-2 +- Resolves: rhbz#596171 drop icu.icu6284.strictalias.patch and use + -fno-strict-aliasig as upstream has added a pile more and doesn't look + interested in proposed patchs + +* Thu Apr 29 2010 Caolán McNamara - 4.4.1-1 +- latest version +- drop integrated icu.icu7567.libctest.patch + +* Fri Apr 02 2010 Caolán McNamara - 4.4-1 +- latest version +- drop integrated icu.6969.pkgdata.patch +- drop integrated icu.icu7039.badextract.patch +- drop integrated icu.XXXX.buildfix.patch + +* Wed Dec 02 2009 Caolán McNamara - 4.2.1-8 +- Resolves: rhbz#543386 update icu-config + +* Thu Nov 19 2009 Caolán McNamara - 4.2.1-7 +- Fix FTBFS with yet another autoconf version that changes + behaviour + +* Mon Aug 31 2009 Caolán McNamara - 4.2.1-6 +- Resolves: rhbz#520468 fix s390x and other secondary archs + +* Tue Jul 28 2009 Caolán McNamara - 4.2.1-5 +- icu#7039 fix broken use of extract to get tests working + +* Fri Jul 24 2009 Fedora Release Engineering - 4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jul 22 2009 Caolán McNamara - 4.2.1-3 +- make documentation noarch + +* Tue Jul 14 2009 Caolán McNamara - 4.2.1-2 +- rpmlint warnings + +* Fri Jul 03 2009 Caolán McNamara - 4.2.1-1 +- 4.2.1 release + +* Fri Jun 26 2009 Caolán McNamara - 4.2.0.1-3 +- Resolves: rhbz#508288 multilib conflict + +* Thu Jun 11 2009 Caolán McNamara - 4.2.0.1-2 +- Resolves: rhbz#505252 add icu.6995.kannada.patch + +* Mon Jun 08 2009 Caolán McNamara - 4.2.0.1-1 +- 4.2.0.1 release + +* Sat May 09 2009 Caolán McNamara - 4.2-1 +- 4.2 release + +* Sun May 03 2009 Caolán McNamara - 4.2-0.1.d03 +- 4.2 release candidate +- drop resolved icu.icu6008.arm.padding.patch +- drop resolved icu.icu6439.bare.elif.patch + +* Tue Feb 24 2009 Fedora Release Engineering - 4.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Feb 03 2009 Caolán McNamara - 4.0.1-2 +- fix bare elif for gcc-4.4 + +* Fri Jan 16 2009 Caolán McNamara - 4.0.1-1 +- 4.0.1 release + +* Mon Dec 29 2008 Caolán McNamara - 4.0-6 +- Resolves rhbz#225896 clean up low hanging rpmlint warnings + +* Tue Dec 16 2008 Caolán McNamara - 4.0-5 +- drop integrated icu.icu5557.safety.patch + +* Thu Nov 20 2008 Caolán McNamara - 4.0-4 +- annoyingly upstream tarball was repacked apparently to remove + some unused/cached dirs + +* Sat Sep 06 2008 Caolán McNamara - 4.0-3 +- Resolves: rhbz#461348 wrong icu-config + +* Tue Aug 26 2008 Caolán McNamara - 4.0-2 +- Resolves: rhbz#459698 drop Malayalam patches. Note test with Rachana/Meera + instead of Lohit Malayalam before filing bugs against icu wrt. + Malayalam rendering + +* Sat Jul 05 2008 Caolán McNamara - 4.0-1 +- final release + +* Mon Jun 30 2008 Caolán McNamara - 4.0-0.3.d03 +- 4.0 release candidate + +* Wed Jun 04 2008 Caolán McNamara - 4.0-0.2.d02 +- drop icu.icu5498.openoffice.org.patch + +* Sat May 31 2008 Caolán McNamara - 4.0-0.1.d02 +- 4.0 release candidate +- drop integrated icu.regexp.patch + +* Mon May 19 2008 Caolán McNamara - 3.8.1-8 +- add icu.icu6284.strictalias.patch and build with + strict-aliasing + +* Tue Mar 18 2008 Caolán McNamara - 3.8.1-7 +- Resolves: rhbz#437761 modify to icu.icu6213.worstcase.patch for + other worst case expansions + +* Mon Mar 17 2008 Caolán McNamara - 3.8.1-6 +- Resolves: rhbz#437761 add icu.icu6213.bengali.worstcase.patch + +* Mon Feb 04 2008 Caolán McNamara - 3.8.1-5 +- Resolves: rhbz#431401 split syllables on 1st 0d4d of a 0d4d + + (>= 0d15 && <= 0d39) + 0d4d + 0d30 sequence + +* Thu Jan 31 2008 Caolán McNamara - 3.8.1-4 +- Resolves: rhbz#431029, rhbz#424661 Remove workaround for 0D31 characters + +* Fri Jan 25 2008 Caolán McNamara - 3.8.1-3 +- CVE-2007-4770 CVE-2007-4771 add icu.regexp.patch +- Resolves: rhbz#423211 fix malalayam stuff in light of syllable + changes + +* Fri Jan 11 2008 Caolán McNamara - 3.8.1-2 +- remove icu.icu5365.dependantvowels.patch and cleanup + icu.icu5506.multiplevowels.patch as they patch and unpatch + eachother (thanks George Rhoten for pointing out that madness) + +* Fri Jan 11 2008 Caolán McNamara - 3.8.1-1 +- latest version +- drop fixed icu.icu6084.zwnj.notdef.patch + +* Thu Dec 13 2007 Caolán McNamara - 3.8-6 +- Resolves: rhbz#423211 experimental hack for 0d15+0d4d+0d30 + +* Tue Dec 11 2007 Caolán McNamara - 3.8-5 +- Resolves: rhbz#415541 icu.icu6084.zwnj.notdef.patch + +* Wed Nov 28 2007 Caolán McNamara - 3.8-4 +- Resolves: ooo#83991 Malayalam "Kartika" font fix + +* Tue Nov 13 2007 Caolán McNamara - 3.8-3 +- add icu.openoffice.org.patch + +* Sat Oct 27 2007 Caolán McNamara - 3.8-2 +- add icu.icu6008.arm.padding.patch to fix an arm problem + +* Tue Oct 02 2007 Caolán McNamara - 3.8-1 +- latest version + +* Mon Sep 03 2007 Caolán McNamara - 3.8-0.2.d02 +- next release candidate + +* Wed Aug 29 2007 Caolán McNamara - 3.8-0.2.d01 +- rebuild + +* Tue Aug 07 2007 Caolán McNamara - 3.8-0.1.d01 +- 3.8 release candidate +- drop integrated icu.icu5433.oriya.patch +- drop integrated icu.icu5488.assamese.patch +- drop integrated icu.icu5500.devicetablecrash.patch +- drop integrated icu.icu5501.sinhala.biggerexpand.patch +- drop integrated icu.icu5594.gujarati.patch +- drop integrated icu.icu5465.telegu.patch + +* Wed Jun 13 2007 Caolán McNamara - 3.6-20 +- Resolves: rhbz#243984 change the icu group as it is libicu + which is "System Environment/Libraries" not icu + +* Mon Apr 30 2007 Caolán McNamara - 3.6-19 +- Resolves: rhbz#220867 Malayalam rendering + +* Tue Feb 13 2007 Caolán McNamara - 3.6-18 +- Resolves: rhbz#228457 icu.icu5594.gujarati.patch + +* Fri Feb 09 2007 Caolán McNamara - 3.6-17 +- spec cleanups + +* Mon Feb 05 2007 Caolán McNamara - 3.6-16 +- Resolves: rhbz#226949 layout telegu like pango + +* Fri Jan 19 2007 Caolán McNamara - 3.6-15 +- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch + +* Tue Jan 09 2007 Caolán McNamara - 3.6-14 +- Related: rhbz#216089 add icu.icu5557.safety.patch + +* Thu Dec 21 2006 Caolán McNamara - 3.6-13 +- Resolves: rhbz#220433 modify icu.icu5431.malayam.patch + +* Fri Nov 10 2006 Caolán McNamara - 3.6-12 +- Resolves: rhbz#214948 icu.icu5506.multiplevowels.patch + +* Wed Nov 08 2006 Caolán McNamara - 3.6-11 +- Resolves: rhbz#214555 icu.icu5501.sinhala.biggerexpand.patch + +* Wed Nov 08 2006 Caolán McNamara - 3.6-10 +- Resolves: rhbz#214555 icu.icu5500.devicetablecrash.patch + +* Wed Oct 18 2006 Caolán McNamara - 3.6-9 +- Resolves: rhbz#213648 extend prev/next to handle ZWJ + +* Wed Oct 18 2006 Caolán McNamara - 3.6-8 +- Resolves: rhbz213375 (icu.icu5488.assamese.patch) + +* Wed Oct 18 2006 Caolán McNamara - 3.6-7 +- Resolves: rhbz#211258 (icu.icu5465.telegu.patch) + +* Thu Oct 05 2006 Caolán McNamara - 3.6-6 +- rh#209391# add icu.icuXXXX.virama.prevnext.patch + +* Mon Oct 02 2006 Caolán McNamara - 3.6-5 +- rh#208705# add pkg-config Require for -devel package +- add icu.icu5431.malayam.patch for rh#208551#/rh#209084# +- add icu.icu5433.oriya.patch for rh#208559#/rh#209083# + +* Sun Oct 01 2006 Jesse Keating - 3.6-4 +- rebuilt for unwind info generation, broken in gcc-4.1.1-21 + +* Mon Sep 25 2006 Caolán McNamara - 3.6-3 +- rh#206615# render malayam like pango + +* Wed Sep 06 2006 Caolán McNamara - 3.6-2 +- fix rh#205252#/icu#5365 (gnome#121882#/#icu#4026#) to make icu + like pango for multiple dependant vowels + +* Sun Sep 03 2006 Caolán McNamara - 3.6-1 +- final release + +* Mon Aug 14 2006 Caolán McNamara - 3.6-0.1.d02 +- bump + +* Tue Aug 08 2006 Caolán McNamara - 3.6-0.2.d01 +- c++ code not alias correct + +* Mon Jul 31 2006 Caolán McNamara - 3.6-0.1.d01 +- rh#200728# update to prelease 3.6d01 to pick up on sinhala fixes +- drop integrated rh190879.patch +- drop integrated icu-3.4-sinhala1.patch + +* Wed Jul 12 2006 Jesse Keating - 3.4-10.1.1 +- rebuild + +* Wed Jul 12 2006 Jesse Keating - 3.4-10.1 +- rebuild + +* Sat Jun 10 2006 Caolán McNamara - 3.4-10 +- rh#194686# BuildRequires + +* Tue May 09 2006 Caolán McNamara - 3.4-9 +- rh#190879# backport fix + +* Wed May 03 2006 Caolán McNamara - 3.4-8 +- add Harshula's icu-3.4-sinhala1.patch for some Sinhala support + +* Tue May 02 2006 Caolán McNamara - 3.4-7 +- add a pkgconfig.pc, make icu-config use it + +* Fri Feb 10 2006 Jesse Keating - 3.4-6.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 3.4-6.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Tue Jan 03 2006 Caolán McNamara - 3.4-6 +- add icu-gcc41.patch + +* Tue Oct 11 2005 Caolán McNamara - 3.4-5 +- clear execstack requirement for libicudata + +* Mon Sep 12 2005 Caolán McNamara - 3.4-4 +- import extra icu.spec into fedora core for openoffice.org +- build with gcc 4 + +* Wed Aug 31 2005 Thorsten Leemhuis - 3.4-3 +- Use dist +- gcc32 does not understand -fstack-protector and + --param=ssp-buffer-size=4 + +* Tue Aug 2 2005 Ville Skyttä - 3.4-2 +- 3.4. + +* Sun Jul 31 2005 Ville Skyttä - 3.4-0.2.d02 +- 3.4-d02. +- Don't ship static libraries. + +* Wed Apr 27 2005 Ville Skyttä - 3.2-3 +- Apply upstream case mapping mutex lock removal patch. +- Build with gcc 3.2 as a temporary workaround for #152495. + +* Thu Apr 7 2005 Michael Schwendt - 3.2-2 +- rebuilt + +* Sat Jan 1 2005 Ville Skyttä - 3.2-1 +- Don't use %%{_smp_mflags} (b.f.u #2357). +- Remove unnecessary Epochs. + +* Sat Dec 4 2004 Ville Skyttä - 0:3.2-0.fdr.1 +- Update to 3.2. + +* Sun Jul 18 2004 Ville Skyttä - 0:3.0-0.fdr.1 +- Update to 3.0, datadirs patch no longer needed. +- Package data in shared libs, drop -locales subpackage. +- Rename -docs subpackage to libicu-doc, and generate graphs with graphviz. + +* Sat Dec 13 2003 Ville Skyttä - 0:2.6.1-0.fdr.3 +- Partial fix for bad datadirs returned by icu-config (works as long as + data packaging mode is not "common" or "dll"). + +* Sun Nov 23 2003 Ville Skyttä - 0:2.6.1-0.fdr.2 +- First complete version. + +* Sun Sep 28 2003 Ville Skyttä - 0:2.6.1-0.fdr.1 +- Update to 2.6.1. + +* Wed Aug 27 2003 Ville Skyttä - 0:2.6-0.fdr.1 +- First build, based on upstream and SuSE 8.2 packages. diff --git a/icuinfo-man.patch b/icuinfo-man.patch new file mode 100644 index 0000000..987e879 --- /dev/null +++ b/icuinfo-man.patch @@ -0,0 +1,145 @@ +Description: supply manual page for program that doesn't have one +Author: Jay Berkenbilt +Bug: http://bugs.icu-project.org/trac/ticket/7665 +erAck: adapted to ICU 56.1 icu/source/tools/icuinfo/Makefile.in + +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... ++.\" ++.\" icuinfo.1: manual page for the icuinfo utility ++.\" ++.\" Copyright (C) 2005-2006 International Business Machines Corporation and others ++.\" ++.TH ICUINFO 1 "1 May 2010" "ICU MANPAGE" "ICU @VERSION@ Manual" ++.SH NAME ++.B icuinfo ++\- Shows some basic info about the current ICU ++.SH SYNOPSIS ++.B icuinfo ++[ ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++] ++[ ++.BR "\-V\fP, \fB\-\-version" ++] ++[ ++.BR "\-c\fP, \fB\-\-copyright" ++] ++[ ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++] ++[ ++.BR "\-v\fP, \fB\-\-verbose" ++] ++[ ++.BI "\-L\fP, \fB\-\-list-plugins" ++] ++[ ++.BI "\-m\fP, \fB\-\-milisecond-time" ++] ++[ ++.BI "\-K\fP, \fB\-\-cleanup" ++] ++.SH DESCRIPTION ++.B icuinfo ++prints basic information about the current version of ICU. ++.SH OPTIONS ++.TP ++.BR "\-h\fP, \fB\-?\fP, \fB\-\-help" ++Print help about usage and exit. ++.TP ++.BR "\-V\fP, \fB\-\-version" ++Print the version of ++.B icuinfo ++and exit. ++.TP ++.BR "\-c\fP, \fB\-\-copyright" ++Embeds the standard ICU copyright into the ++.IR output-file . ++.TP ++.BR "\-v\fP, \fB\-\-verbose" ++Display extra informative messages during execution. ++.TP ++.BI "\-i\fP, \fB\-\-icudatadir" " directory" ++Look for any necessary ICU data files in ++.IR directory . ++For example, the file ++.B pnames.icu ++must be located when ICU's data is not built as a shared library. ++The default ICU data directory is specified by the environment variable ++.BR ICU_DATA . ++Most configurations of ICU do not require this argument. ++.TP ++.BI "\-L\fP, \fB\-\-list-plugins" ++If specified, list and diagnose issues with ICU plugins. ++.TP ++.BI "\-K\fP, \fB\-\-cleanup" ++Attempt to unload plugins before exiting. ++.TP ++.BI "\-m\fP, \fB\-\-milisecond-time" ++Print the current UTC time in milliseconds. ++.SH COPYRIGHT ++Copyright (C) 2010 International Business Machines Corporation and others +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 + ++TARGET_STUB_NAME = icuinfo ++ ++SECTION = 1 ++ ++MAN_FILES = $(TARGET_STUB_NAME).$(SECTION) ++ ++ + ## Extra files to remove for 'make clean' +-CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) ++CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) $(MAN_FILES) + + ## Target information + TARGET = icuinfo$(EXEEXT) +@@ -35,7 +42,8 @@ + + ## List of phony targets + .PHONY : all all-local install install-local clean clean-local \ +-distclean distclean-local dist dist-local check check-local plugin-check ++distclean distclean-local dist dist-local check check-local plugin-check \ ++install-man + + ## Clear suffix list + .SUFFIXES : +@@ -48,12 +56,16 @@ + dist: dist-local + check: all check-local + +-all-local: $(TARGET) ++all-local: $(TARGET) $(MAN_FILES) + +-install-local: all-local ++install-local: all-local install-man + $(MKINSTALLDIRS) $(DESTDIR)$(bindir) + $(INSTALL) $(TARGET) $(DESTDIR)$(bindir) + ++install-man: $(MAN_FILES) ++ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION) ++ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION) ++ + dist-local: + + clean-local: +@@ -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 diff --git a/negative-daylight-savings.patch b/negative-daylight-savings.patch new file mode 100644 index 0000000..d3195a5 --- /dev/null +++ b/negative-daylight-savings.patch @@ -0,0 +1,154 @@ +Index: icu4c/source/test/intltest/tzregts.cpp +=================================================================== +--- icu4c/source/test/intltest/tzregts.cpp (リビジョン 40953) ++++ icu4c/source/test/intltest/tzregts.cpp (リビジョン 40954) +@@ -12,6 +12,7 @@ + #include "unicode/simpletz.h" + #include "unicode/smpdtfmt.h" + #include "unicode/strenum.h" ++#include "unicode/gregocal.h" + #include "tzregts.h" + #include "calregts.h" + #include "cmemory.h" +@@ -46,6 +47,7 @@ + CASE(16, TestJDK12API); + CASE(17, Test4176686); + CASE(18, Test4184229); ++ CASE(19, TestNegativeDaylightSaving); + default: name = ""; break; + } + } +@@ -709,10 +711,10 @@ + int32_t DATA [] = { + 1, GOOD, + 0, BAD, +- -1, BAD, ++ -1, GOOD, // #13566 updates SimpleTimeZone to support negative DST saving amount + 60*60*1000, GOOD, +- INT32_MIN, BAD, +- // Integer.MAX_VALUE, ?, // no upper limit on DST savings at this time ++ INT32_MAX, GOOD, // no upper limit on DST savings at this time ++ INT32_MIN, GOOD // no lower limit as well + }; + + UErrorCode status = U_ZERO_ERROR; +@@ -1206,4 +1208,61 @@ + delete zone; + } + ++void TimeZoneRegressionTest::TestNegativeDaylightSaving() { ++ UErrorCode status = U_ZERO_ERROR; ++ int32_t stdOff = 1 * 60*60*1000; // Standard offset UTC+1 ++ int save = -1 * 60*60*1000; // DST saving amount -1 hour ++ SimpleTimeZone stzDublin(stdOff, "Dublin-2018", ++ UCAL_OCTOBER, -1, -UCAL_SUNDAY, 2*60*60*1000, ++ UCAL_MARCH, -1, -UCAL_SUNDAY, 1*60*60*1000, ++ save, status); ++ failure(status, "SimpleTimeZone constructor"); ++ ++ if (save != stzDublin.getDSTSavings()) { ++ errln((UnicodeString)"FAIL: DST saving is not " + save); ++ } ++ ++ GregorianCalendar cal(* TimeZone::getGMT(), status); ++ failure(status, "GregorianCalendar constructor"); ++ ++ UDate testDate; ++ int32_t rawOffset; ++ int32_t dstOffset; ++ ++ cal.set(2018, UCAL_JANUARY, 15, 0, 0, 0); ++ testDate = cal.getTime(status); ++ failure(status, "calendar getTime() - Jan 15"); ++ ++ if (!stzDublin.inDaylightTime(testDate, status)) { ++ errln("FAIL: The test date (Jan 15) must be in DST."); ++ } ++ failure(status, "inDaylightTime() - Jan 15"); ++ ++ stzDublin.getOffset(testDate, FALSE, rawOffset, dstOffset, status); ++ failure(status, "getOffset() - Jan 15"); ++ if (rawOffset != stdOff || dstOffset != save) { ++ errln((UnicodeString)"FAIL: Expected [stdoff=" + stdOff + ",save=" + save ++ + "] on the test date (Jan 15), actual[stdoff=" + rawOffset ++ + ",save=" + dstOffset + "]"); ++ } ++ ++ cal.set(2018, UCAL_JULY, 15, 0, 0, 0); ++ testDate = cal.getTime(status); ++ failure(status, "calendar getTime() - Jul 15"); ++ ++ if (stzDublin.inDaylightTime(testDate, status)) { ++ errln("FAIL: The test date (Jul 15) must be in DST."); ++ } ++ failure(status, "inDaylightTime() - Jul 15"); ++ ++ stzDublin.getOffset(testDate, FALSE, rawOffset, dstOffset, status); ++ failure(status, "getOffset() - Jul 15"); ++ if (rawOffset != stdOff || dstOffset != 0) { ++ errln((UnicodeString)"FAIL: Expected [stdoff=" + stdOff + ",save=" + 0 ++ + "] on the test date (Jul 15), actual[stdoff=" + rawOffset ++ + ",save=" + dstOffset + "]"); ++ } ++} ++ ++ + #endif /* #if !UCONFIG_NO_FORMATTING */ +Index: icu4c/source/test/intltest/tzregts.h +=================================================================== +--- icu4c/source/test/intltest/tzregts.h (リビジョン 40953) ++++ icu4c/source/test/intltest/tzregts.h (リビジョン 40954) +@@ -49,6 +49,7 @@ + void TestJDK12API(void); + void Test4184229(void); + UBool checkCalendar314(GregorianCalendar *testCal, TimeZone *testTZ); ++ void TestNegativeDaylightSaving(void); + + + protected: +Index: icu4c/source/i18n/simpletz.cpp +=================================================================== +--- icu4c/source/i18n/simpletz.cpp (リビジョン 40953) ++++ icu4c/source/i18n/simpletz.cpp (リビジョン 40954) +@@ -177,7 +177,7 @@ + + decodeRules(status); + +- if (savingsDST <= 0) { ++ if (savingsDST == 0) { + status = U_ILLEGAL_ARGUMENT_ERROR; + } + } +@@ -686,7 +686,7 @@ + void + SimpleTimeZone::setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status) + { +- if (millisSavedDuringDST <= 0) { ++ if (millisSavedDuringDST == 0) { + status = U_ILLEGAL_ARGUMENT_ERROR; + } + else { +Index: icu4c/source/i18n/unicode/simpletz.h +=================================================================== +--- icu4c/source/i18n/unicode/simpletz.h (リビジョン 40953) ++++ icu4c/source/i18n/unicode/simpletz.h (リビジョン 40954) +@@ -647,7 +647,8 @@ + * Sets the amount of time in ms that the clock is advanced during DST. + * @param millisSavedDuringDST the number of milliseconds the time is + * advanced with respect to standard time when the daylight savings rules +- * are in effect. A positive number, typically one hour (3600000). ++ * are in effect. Typically one hour (+3600000). The amount could be negative, ++ * but not 0. + * @param status An UErrorCode to receive the status. + * @stable ICU 2.0 + */ +@@ -657,7 +658,8 @@ + * Returns the amount of time in ms that the clock is advanced during DST. + * @return the number of milliseconds the time is + * advanced with respect to standard time when the daylight savings rules +- * are in effect. A positive number, typically one hour (3600000). ++ * are in effect. Typically one hour (+3600000). The amount could be negative, ++ * but not 0. + * @stable ICU 2.0 + */ + virtual int32_t getDSTSavings(void) const; diff --git a/sources b/sources new file mode 100644 index 0000000..a8d5b27 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (icu4c-60_3-src.tgz) = b91c9989459e301b63091a9b767bdc69621afa3c1a1b9ad57dd0b34d5436e49de096ba1945008ce7b147fe3be70e5f959a77a786feec843decbc505e97a49eaf