diff options
-rw-r--r-- | icu/icu-3.6.patch | 606 |
1 files changed, 589 insertions, 17 deletions
diff --git a/icu/icu-3.6.patch b/icu/icu-3.6.patch index 6a5137da21ef..51b1c580e48d 100644 --- a/icu/icu-3.6.patch +++ b/icu/icu-3.6.patch @@ -1,5 +1,9 @@ *** misc/icu/source/common/putil.c Mon Jul 31 20:14:28 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/putil.c Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/putil.c Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 48,54 **** #endif @@ -19,7 +23,11 @@ #endif *** misc/icu/source/common/unicode/pwin32.h Tue Aug 29 23:34:38 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/unicode/pwin32.h Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/unicode/pwin32.h Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 266,273 **** --- 266,278 ---- @@ -37,7 +45,11 @@ /*===========================================================================*/ /* Code alignment and C function inlining */ *** misc/icu/source/common/unicode/rbbi.h Fri Aug 11 07:46:40 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/unicode/rbbi.h Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/unicode/rbbi.h Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 611,622 **** --- 611,624 ---- @@ -56,7 +68,11 @@ * Common initialization function, used by constructors and bufferClone. * (Also used by DictionaryBasedBreakIterator::createBufferClone().) *** misc/icu/source/common/unicode/umachine.h Tue Feb 7 02:54:16 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/unicode/umachine.h Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/unicode/umachine.h Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 322,328 **** */ @@ -75,7 +91,11 @@ #else typedef uint16_t UChar; *** misc/icu/source/common/unicode/unistr.h Tue Aug 29 23:52:50 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/unicode/unistr.h Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/unicode/unistr.h Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 3280,3286 **** //======================================== @@ -179,7 +199,11 @@ } *** misc/icu/source/common/unicode/ustring.h Tue Aug 29 23:52:50 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/common/unicode/ustring.h Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/common/unicode/ustring.h Mon Jan 28 21:31:50 2008 +>>>>>>> 1.10.12.2 *************** *** 918,924 **** * </pre> @@ -197,8 +221,184 @@ # define U_STRING_DECL(var, cs, length) static const wchar_t var[(length)+1]={ L ## cs } /**@stable ICU 2.0 */ # define U_STRING_INIT(var, cs, length) +*** misc/icu/source/common/uvectr32.cpp Wed Aug 27 03:01:30 2003 +--- misc/build/icu/source/common/uvectr32.cpp Mon Jan 28 21:31:51 2008 +*************** +*** 1,6 **** + /* + ****************************************************************************** +! * Copyright (C) 1999-2003, International Business Machines Corporation and * + * others. All Rights Reserved. * + ****************************************************************************** + * Date Name Description +--- 1,6 ---- + /* + ****************************************************************************** +! * Copyright (C) 1999-2008, International Business Machines Corporation and * + * others. All Rights Reserved. * + ****************************************************************************** + * Date Name Description +*************** +*** 26,31 **** +--- 26,32 ---- + UVector32::UVector32(UErrorCode &status) : + count(0), + capacity(0), ++ maxCapacity(0), + elements(NULL) + { + _init(DEFUALT_CAPACITY, status); +*************** +*** 34,39 **** +--- 35,41 ---- + UVector32::UVector32(int32_t initialCapacity, UErrorCode &status) : + count(0), + capacity(0), ++ maxCapacity(0), + elements(0) + { + _init(initialCapacity, status); +*************** +*** 46,51 **** +--- 48,56 ---- + if (initialCapacity < 1) { + initialCapacity = DEFUALT_CAPACITY; + } ++ if (maxCapacity>0 && maxCapacity<initialCapacity) { ++ initialCapacity = maxCapacity; ++ } + elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity); + if (elements == 0) { + status = U_MEMORY_ALLOCATION_ERROR; +*************** +*** 189,209 **** + UBool UVector32::expandCapacity(int32_t minimumCapacity, UErrorCode &status) { + if (capacity >= minimumCapacity) { + return TRUE; +! } else { +! int32_t newCap = capacity * 2; +! if (newCap < minimumCapacity) { +! newCap = minimumCapacity; +! } +! int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); +! if (newElems == 0) { +! status = U_MEMORY_ALLOCATION_ERROR; +! return FALSE; +! } +! uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); +! uprv_free(elements); +! elements = newElems; +! capacity = newCap; +! return TRUE; + } + } + +--- 194,228 ---- + UBool UVector32::expandCapacity(int32_t minimumCapacity, UErrorCode &status) { + if (capacity >= minimumCapacity) { + return TRUE; +! } +! if (maxCapacity>0 && minimumCapacity>maxCapacity) { +! status = U_BUFFER_OVERFLOW_ERROR; +! return FALSE; +! } +! int32_t newCap = capacity * 2; +! if (newCap < minimumCapacity) { +! newCap = minimumCapacity; +! } +! if (maxCapacity > 0 && newCap > maxCapacity) { +! newCap = maxCapacity; +! } +! int32_t* newElems = (int32_t *)uprv_malloc(sizeof(int32_t)*newCap); +! if (newElems == 0) { +! status = U_MEMORY_ALLOCATION_ERROR; +! return FALSE; +! } +! uprv_memcpy(newElems, elements, sizeof(elements[0]) * count); +! uprv_free(elements); +! elements = newElems; +! capacity = newCap; +! return TRUE; +! } +! +! void UVector32::setMaxCapacity(int32_t limit) { +! U_ASSERT(limit >= 0); +! maxCapacity = limit; +! if (maxCapacity < 0) { +! maxCapacity = 0; + } + } + +*** misc/icu/source/common/uvectr32.h Wed Jan 18 04:52:04 2006 +--- misc/build/icu/source/common/uvectr32.h Mon Jan 28 21:31:51 2008 +*************** +*** 1,6 **** + /* + ********************************************************************** +! * Copyright (C) 1999-2006, International Business Machines + * Corporation and others. All Rights Reserved. + ********************************************************************** + */ +--- 1,6 ---- + /* + ********************************************************************** +! * Copyright (C) 1999-2008, International Business Machines + * Corporation and others. All Rights Reserved. + ********************************************************************** + */ +*************** +*** 61,66 **** +--- 61,68 ---- + int32_t count; + + int32_t capacity; ++ ++ int32_t maxCapacity; // Limit beyond which capacity is not permitted to grow. + + int32_t* elements; + +*************** +*** 162,167 **** +--- 164,177 ---- + int32_t *getBuffer() const; + + /** ++ * Set the maximum allowed buffer capacity for this vector/stack. ++ * Default with no limit set is unlimited, go until malloc() fails. ++ * A Limit of zero means unlimited capacity. ++ * Units are vector elements (32 bits each), not bytes. ++ */ ++ void setMaxCapacity(int32_t limit); ++ ++ /** + * ICU "poor man's RTTI", returns a UClassID for this class. + */ + static UClassID U_EXPORT2 getStaticClassID(); +*************** +*** 221,227 **** + } + + inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) { +! ensureCapacity(count+size, status); + int32_t *rp = elements+count; + count += size; + return rp; +--- 231,239 ---- + } + + inline int32_t *UVector32::reserveBlock(int32_t size, UErrorCode &status) { +! if (ensureCapacity(count+size, status) == FALSE) { +! return NULL; +! } + int32_t *rp = elements+count; + count += size; + return rp; *** misc/icu/source/config/mh-darwin Wed Feb 1 08:52:42 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/config/mh-darwin Tue Nov 13 13:03:51 2007 +======= +--- misc/build/icu/source/config/mh-darwin Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 25,31 **** SHLIB.cc= $(CXX) -dynamiclib -dynamic $(CXXFLAGS) $(LDFLAGS) @@ -217,7 +417,11 @@ ## Compiler switch to embed a runtime search path LD_RPATH= *** misc/icu/source/config/mh-irix Thu Mar 23 19:51:52 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/config/mh-irix Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/config/mh-irix Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 23,28 **** --- 23,31 ---- @@ -231,7 +435,11 @@ THREADSCPPFLAGS = -D_REENTRANT -D_PTHREADS LIBCPPFLAGS = *** misc/icu/source/config/mh-linux Thu Mar 23 19:51:52 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/config/mh-linux Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/config/mh-linux Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 20,25 **** --- 20,33 ---- @@ -250,7 +458,11 @@ LDFLAGSICUDT=-nodefaultlibs -nostdlib *** misc/icu/source/config/mh-mingw Tue Aug 15 10:24:14 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/config/mh-mingw Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/config/mh-mingw Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 54,59 **** --- 54,62 ---- @@ -284,9 +496,13 @@ CURR_SRCCODE_FULL_DIR=$(subst /,\\\\,$(shell pwd -W))#M# *** misc/icu/source/config/mh-solaris Fri Feb 24 20:31:14 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/config/mh-solaris Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/config/mh-solaris Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** -*** 18,33 **** +*** 18,34 **** ## Commands to link ## For Sun Workshop, use CC to link to bring in C++ runtime @@ -303,7 +519,8 @@ #LIBRARY_PATH_PREFIX=/usr/lib/lwp: ---- 18,41 ---- + ## Compiler switch to embed a library name +--- 18,42 ---- ## Commands to link ## For Sun Workshop, use CC to link to bring in C++ runtime @@ -318,18 +535,23 @@ ## Compiler switch to embed a runtime search path LD_RPATH= -R LD_RPATH_PRE= -+ + + ## Force RPATH=$ORIGIN to locate own dependencies w/o need for LD_LIBRARY_PATH + ENABLE_RPATH=YES + RPATHLDFLAGS=${LD_RPATH}'$$ORIGIN' + + #SH# ENABLE_RPATH=YES + #SH# RPATHLDFLAGS="${LD_RPATH}'$$ORIGIN'" - ++ #LIBRARY_PATH_PREFIX=/usr/lib/lwp: + ## Compiler switch to embed a library name *** misc/icu/source/data/Makefile.in Sat Aug 12 00:22:24 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/data/Makefile.in Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/data/Makefile.in Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 344,350 **** ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) @@ -347,8 +569,190 @@ else @echo "$@" > $@ endif +*** misc/icu/source/i18n/regexcmp.cpp Thu Feb 2 05:37:14 2006 +--- misc/build/icu/source/i18n/regexcmp.cpp Mon Jan 28 21:31:51 2008 +*************** +*** 2,8 **** + // + // file: regexcmp.cpp + // +! // Copyright (C) 2002-2006 International Business Machines Corporation and others. + // All Rights Reserved. + // + // This file contains the ICU regular expression compiler, which is responsible +--- 2,8 ---- + // + // file: regexcmp.cpp + // +! // Copyright (C) 2002-2008 International Business Machines Corporation and others. + // All Rights Reserved. + // + // This file contains the ICU regular expression compiler, which is responsible +*************** +*** 1187,1200 **** + // Because capture groups can be forward-referenced by back-references, + // we fill the operand with the capture group number. At the end + // of compilation, it will be changed to the variable's location. +! U_ASSERT(groupNum > 0); +! int32_t op; +! if (fModeFlags & UREGEX_CASE_INSENSITIVE) { +! op = URX_BUILD(URX_BACKREF_I, groupNum); + } else { +! op = URX_BUILD(URX_BACKREF, groupNum); + } +- fRXPat->fCompiledPat->addElement(op, *fStatus); + } + break; + +--- 1187,1203 ---- + // Because capture groups can be forward-referenced by back-references, + // we fill the operand with the capture group number. At the end + // of compilation, it will be changed to the variable's location. +! if (groupNum < 1) { +! error(U_REGEX_INVALID_BACK_REF); + } else { +! int32_t op; +! if (fModeFlags & UREGEX_CASE_INSENSITIVE) { +! op = URX_BUILD(URX_BACKREF_I, groupNum); +! } else { +! op = URX_BUILD(URX_BACKREF, groupNum); +! } +! fRXPat->fCompiledPat->addElement(op, *fStatus); + } + } + break; + +*** misc/icu/source/i18n/rematch.cpp Thu Aug 25 20:02:20 2005 +--- misc/build/icu/source/i18n/rematch.cpp Mon Jan 28 21:31:51 2008 +*************** +*** 6,12 **** + // + /* + ************************************************************************** +! * Copyright (C) 2002-2005 International Business Machines Corporation * + * and others. All rights reserved. * + ************************************************************************** + */ +--- 6,12 ---- + // + /* + ************************************************************************** +! * Copyright (C) 2002-2008 International Business Machines Corporation * + * and others. All rights reserved. * + ************************************************************************** + */ +*************** +*** 30,35 **** +--- 30,44 ---- + + U_NAMESPACE_BEGIN + ++ // Limit the size of the back track stack, to avoid system failures caused ++ // by heap exhaustion. Units are in 32 bit words, not bytes. ++ // This value puts ICU's limits higher than most other regexp implementations, ++ // which use recursion rather than the heap, and take more storage per ++ // backtrack point. ++ // This constant is _temporary_. Proper API to control the value will added. ++ // ++ static const int32_t BACKTRACK_STACK_CAPACITY = 8000000; ++ + //----------------------------------------------------------------------------- + // + // Constructor and Destructor +*************** +*** 53,60 **** + } + if (fStack == NULL || fData == NULL) { + fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; + } +- + reset(*RegexStaticSets::gStaticSets->fEmptyString); + } + +--- 62,70 ---- + } + if (fStack == NULL || fData == NULL) { + fDeferredStatus = U_MEMORY_ALLOCATION_ERROR; ++ } else { ++ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); + } + reset(*RegexStaticSets::gStaticSets->fEmptyString); + } + +*************** +*** 78,83 **** +--- 88,95 ---- + } + if (fStack == NULL || fData == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; ++ } else { ++ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); + } + reset(input); + } +*************** +*** 102,107 **** +--- 114,121 ---- + } + if (fStack == NULL || fData == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; ++ } else { ++ fStack->setMaxCapacity(BACKTRACK_STACK_CAPACITY); + } + reset(*RegexStaticSets::gStaticSets->fEmptyString); + } +*************** +*** 1015,1020 **** +--- 1029,1042 ---- + inline REStackFrame *RegexMatcher::StateSave(REStackFrame *fp, int32_t savePatIdx, int32_t frameSize, UErrorCode &status) { + // push storage for a new frame. + int32_t *newFP = fStack->reserveBlock(frameSize, status); ++ if (newFP == NULL) { ++ // Heap allocation error on attempted stack expansion. ++ // We need to return a writable stack frame, so just return the ++ // previous frame. The match operation will stop quickly ++ // becuase of the error status, after which the frame will never ++ // be looked at again. ++ return fp; ++ } + fp = (REStackFrame *)(newFP - frameSize); // in case of realloc of stack. + + // New stack frame = copy of old top frame. +*************** +*** 1030,1037 **** + fp->fPatIdx = savePatIdx; + return (REStackFrame *)newFP; + } +! +! + //-------------------------------------------------------------------------------- + // + // MatchAt This is the actual matching engine. +--- 1052,1059 ---- + fp->fPatIdx = savePatIdx; + return (REStackFrame *)newFP; + } +! +! + //-------------------------------------------------------------------------------- + // + // MatchAt This is the actual matching engine. +*************** +*** 2262,2267 **** +--- 2284,2290 ---- + } + + if (U_FAILURE(status)) { ++ isMatch = FALSE; + break; + } + } *** misc/icu/source/i18n/windtfmt.cpp Tue Aug 15 08:48:02 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/i18n/windtfmt.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/i18n/windtfmt.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 232,249 **** UChar stackBuffer[STACK_BUFFER_SIZE]; @@ -428,7 +832,11 @@ if (buffer != stackBuffer) { DELETE_ARRAY(buffer); *** misc/icu/source/i18n/winnmfmt.cpp Thu Aug 17 07:21:06 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/i18n/winnmfmt.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/i18n/winnmfmt.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 86,95 **** GetLocaleInfoA(lcid, LOCALE_SGROUPING, buf, 10); @@ -566,7 +974,11 @@ if (buffer != stackBuffer) { DELETE_ARRAY(buffer); *** misc/icu/source/layout/CoverageTables.cpp Sat May 8 01:28:42 2004 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/CoverageTables.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/CoverageTables.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 44,49 **** --- 44,53 ---- @@ -581,7 +993,11 @@ le_uint16 probe = power; le_uint16 index = 0; *** misc/icu/source/layout/DeviceTables.cpp Fri Jan 14 18:25:12 2005 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/DeviceTables.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/DeviceTables.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 22,28 **** le_uint16 format = SWAPW(deltaFormat) - 1; @@ -601,7 +1017,11 @@ le_uint16 bits = fieldBits[format]; le_uint16 count = 16 / bits; *** misc/icu/source/layout/GXLayoutEngine.cpp Fri Sep 2 20:22:10 2005 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/GXLayoutEngine.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/GXLayoutEngine.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 39,45 **** return 0; @@ -620,7 +1040,11 @@ if (LE_FAILURE(success)) { return 0; *** misc/icu/source/layout/IndicClassTables.cpp Wed Aug 23 02:12:40 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/IndicClassTables.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/IndicClassTables.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 94,100 **** _dr, _db, _db, _db, _db, _xx, _xx, _l1, _dl, _xx, _xx, _s1, _s2, _vr, _xx, _xx, // 09C0 - 09CF @@ -754,7 +1178,11 @@ // // IndicClassTable addresses *** misc/icu/source/layout/IndicReordering.cpp Tue Apr 25 21:08:12 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/IndicReordering.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/IndicReordering.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 50,55 **** --- 50,63 ---- @@ -836,13 +1264,11 @@ {-1, -1, -1, -1, -1, -1, 3, 2, -1, -1, -1, -1, -1, -1, -1}, // 7 - consonant virama ZWJ, consonant ZWJ virama {-1, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1}, // 8 - independent vowels that can take a virama *************** -*** 627,632 **** ---- 649,668 ---- - // write base consonant - for (i = baseConsonant; i < bcSpan; i += 1) { +*** 629,634 **** +--- 651,670 ---- output.writeChar(chars[i], i, tagArray4); -+ } -+ + } + + /* for the special conjuction of Cons+0x0d4d+0x0d31 or Cons+0x0d4d+0x0d30 of Malayalam */ + if ((baseConsonant - 2 >= 0) && + (chars[baseConsonant - 1] == 0x0d4d) && @@ -855,11 +1281,17 @@ + + if (mpreFixups) + mpreFixups->reduce(); - } - ++ } ++ if ((classTable->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) { + output.writeMbelow(); + output.writeSMbelow(); // FIXME: there are no SMs in these scripts... *** misc/icu/source/layout/LESwaps.h Thu Jun 23 00:39:36 2005 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/LESwaps.h Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/LESwaps.h Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 2,7 **** --- 2,8 ---- @@ -907,12 +1339,11 @@ #if U_IS_BIG_ENDIAN #define SWAPW(value) (value) *************** -*** 48,53 **** ---- 58,82 ---- - #else +*** 49,54 **** +--- 59,83 ---- #define SWAPL(value) (LESwaps::isBigEndian() ? (value) : LESwaps::swapLong(value)) #endif -+ + + #else // ALLOW_UNALIGNED_HACK + + #define SWAPW(rValue) loadBigEndianWord(reinterpret_cast<const le_uint16&>(rValue)) @@ -931,11 +1362,16 @@ + } + + #endif // ALLOW_UNALIGNED_HACK - ++ /** * This class is used to access data which stored in big endian order + * regardless of the conventions of the platform. It has been designed *** misc/icu/source/layout/MPreFixups.cpp Sat May 8 01:28:44 2004 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/MPreFixups.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/MPreFixups.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 40,45 **** --- 40,51 ---- @@ -952,7 +1388,11 @@ { for (le_int32 fixup = 0; fixup < fFixupCount; fixup += 1) { *** misc/icu/source/layout/MPreFixups.h Mon Apr 12 20:51:32 2004 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/layout/MPreFixups.h Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/layout/MPreFixups.h Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 31,36 **** --- 31,38 ---- @@ -965,7 +1405,11 @@ FixupData *fFixupData; le_int32 fFixupCount; *** misc/icu/source/stubdata/Makefile.in Fri Dec 2 11:21:34 2005 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/stubdata/Makefile.in Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/stubdata/Makefile.in Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 25,30 **** --- 25,36 ---- @@ -982,7 +1426,11 @@ ifneq ($(ENABLE_STATIC),) TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A) *** misc/icu/source/test/intltest/loctest.cpp Thu Jul 6 03:50:04 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/test/intltest/loctest.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/test/intltest/loctest.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 4,9 **** --- 4,10 ---- @@ -993,8 +1441,120 @@ #include "loctest.h" #include "unicode/decimfmt.h" #include "unicode/ucurr.h" +*** misc/icu/source/test/intltest/regextst.cpp Tue Jul 5 20:39:00 2005 +--- misc/build/icu/source/test/intltest/regextst.cpp Mon Jan 28 23:18:47 2008 +*************** +*** 1,6 **** + /******************************************************************** + * COPYRIGHT: +! * Copyright (c) 2002-2005, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +--- 1,6 ---- + /******************************************************************** + * COPYRIGHT: +! * Copyright (c) 2002-2008, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +*************** +*** 66,71 **** +--- 66,75 ---- + case 6: name = "PerlTests"; + if (exec) PerlTests(); + break; ++ case 7: name = "Bug 6149"; ++ if (exec) Bug6149(); ++ break; ++ + + + default: name = ""; +*************** +*** 1639,1644 **** +--- 1643,1661 ---- + + } + ++ ++ // Invalid Back Reference \0 ++ // For ICU 3.8 and earlier ++ // For ICU versions newer than 3.8, \0 introduces an octal escape. ++ // ++ #ifndef _MSC_VER ++ // erAck: 2008-01-28T23:16+0100 MSVC doesn't digest the escaped backslash and ++ // mumbles something about ++ // error C2501: 'regex_err' : missing storage-class or type specifiers ++ // error C2078: too many initializers ++ // We're not interested in fixing that deficiency just for a testcase. ++ REGEX_ERR("(ab)\\0", 1, 6, U_REGEX_INVALID_BACK_REF); ++ #endif + + //------------------------------------------------------------------------------- + // +*************** +*** 2119,2124 **** +--- 2136,2161 ---- + } + + ++ //-------------------------------------------------------------- ++ // ++ // Bug6149 Verify limits to heap expansion for backtrack stack. ++ // Use this pattern, ++ // "(a?){1,}" ++ // The zero-length match will repeat forever. ++ // (That this goes into a loop is another bug) ++ // ++ //--------------------------------------------------------------- ++ void RegexTest::Bug6149() { ++ UnicodeString pattern("(a?){1,}"); ++ UnicodeString s("xyz"); ++ uint32_t flags = 0; ++ UErrorCode status = U_ZERO_ERROR; ++ ++ RegexMatcher matcher(pattern, s, flags, status); ++ UBool result = false; ++ REGEX_ASSERT_FAIL(result=matcher.matches(status), U_BUFFER_OVERFLOW_ERROR); ++ REGEX_ASSERT(result == FALSE); ++ } + + #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ + +*** misc/icu/source/test/intltest/regextst.h Wed Dec 3 07:58:28 2003 +--- misc/build/icu/source/test/intltest/regextst.h Mon Jan 28 21:31:51 2008 +*************** +*** 1,6 **** + /******************************************************************** + * COPYRIGHT: +! * Copyright (c) 2002-2003, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +--- 1,6 ---- + /******************************************************************** + * COPYRIGHT: +! * Copyright (c) 2002-2008, International Business Machines Corporation and + * others. All Rights Reserved. + ********************************************************************/ + +*************** +*** 30,35 **** +--- 30,36 ---- + virtual void Extended(); + virtual void Errors(); + virtual void PerlTests(); ++ virtual void Bug6149(); + + // The following functions are internal to the regexp tests. + virtual UBool doRegexLMTest(const char *pat, const char *text, UBool looking, UBool match, int line); *** misc/icu/source/test/intltest/tsputil.cpp Wed Jul 19 00:18:10 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/test/intltest/tsputil.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/test/intltest/tsputil.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 4,9 **** --- 4,10 ---- @@ -1006,7 +1566,11 @@ #include <float.h> // DBL_MAX, DBL_MIN *** misc/icu/source/test/intltest/uobjtest.cpp Thu Mar 23 01:54:12 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/test/intltest/uobjtest.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/test/intltest/uobjtest.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 4,9 **** --- 4,10 ---- @@ -1018,7 +1582,11 @@ #include "cmemory.h" // UAlignedMemory #include <string.h> *** misc/icu/source/test/intltest/ustrtest.cpp Tue Dec 28 22:13:54 2004 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/test/intltest/ustrtest.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/test/intltest/ustrtest.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 4,9 **** --- 4,10 ---- @@ -1030,7 +1598,11 @@ #include "unicode/unistr.h" #include "unicode/uchar.h" *** misc/icu/source/tools/icupkg/icupkg.cpp Fri Jul 21 23:17:52 2006 +<<<<<<< icu-3.6.patch --- misc/build/icu/source/tools/icupkg/icupkg.cpp Tue Nov 13 13:03:52 2007 +======= +--- misc/build/icu/source/tools/icupkg/icupkg.cpp Mon Jan 28 21:31:51 2008 +>>>>>>> 1.10.12.2 *************** *** 332,337 **** --- 332,341 ---- |