Index: common/unicode/unistr.h =================================================================== --- common/unicode/unistr.h (revision 75773) +++ common/unicode/unistr.h (working copy) @@ -4089,7 +4089,7 @@ #if defined(__GNUC__) // Ticket #7039: Clip length to the maximum valid length to the end of addressable memory given the starting address // This is only an issue when using GCC and certain optimizations are turned on. - return extract(start, _length, dst, dst!=0 ? ((dst >= (char*)((size_t)-1) - UINT32_MAX) ? (((char*)UINT32_MAX) - dst) : UINT32_MAX) : 0, codepage); + return extract(start, _length, dst, dst!=0 ? ((dst >= (char*)((size_t)-1) - UINT32_MAX) ? static_cast<unsigned int>((((char*)UINT32_MAX) - dst)) : UINT32_MAX) : 0, codepage); #else return extract(start, _length, dst, dst!=0 ? 0xffffffff : 0, codepage); #endif Index: source/i18n/colldata.cpp =================================================================== --- source/i18n/colldata.cpp (revision 122103) +++ source/i18n/colldata.cpp (working copy) @@ -236,9 +236,14 @@ int32_t newMax = listMax + STRING_LIST_BUFFER_SIZE; UnicodeString *newStrings = new UnicodeString[newMax]; + if (newStrings == NULL) { + status = U_MEMORY_ALLOCATION_ERROR; + return; + } + for (int32_t i=0; i<listSize; ++i) { + newStrings[i] = strings[i]; + } - uprv_memcpy(newStrings, strings, listSize * sizeof(UnicodeString)); - #ifdef INSTRUMENT_STRING_LIST int32_t _h = listSize / STRING_LIST_BUFFER_SIZE; Index: source/i18n/decNumber.c =================================================================== --- source/i18n/decNumber.c (revision 122360) +++ source/i18n/decNumber.c (working copy) @@ -1392,6 +1392,8 @@ /* fastpath in decLnOp. The final division is done to the requested */ /* precision. */ /* ------------------------------------------------------------------ */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warray-bounds" U_CAPI decNumber * U_EXPORT2 uprv_decNumberLog10(decNumber *res, const decNumber *rhs, decContext *set) { uInt status=0, ignore=0; /* status accumulators */ @@ -1527,6 +1529,7 @@ #endif return res; } /* decNumberLog10 */ +#pragma clang diagnostic pop /* ------------------------------------------------------------------ */ /* decNumberMax -- compare two Numbers and return the maximum */ @@ -2800,6 +2803,8 @@ /* result setexp(approx, e div 2) % fix exponent */ /* end sqrt */ /* ------------------------------------------------------------------ */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warray-bounds" U_CAPI decNumber * U_EXPORT2 uprv_decNumberSquareRoot(decNumber *res, const decNumber *rhs, decContext *set) { decContext workset, approxset; /* work contexts */ @@ -3129,6 +3134,7 @@ #endif return res; } /* decNumberSquareRoot */ +#pragma clang diagnostic pop /* ------------------------------------------------------------------ */ /* decNumberSubtract -- subtract two Numbers */ @@ -5584,6 +5590,8 @@ /* 5. The static buffers are larger than might be expected to allow */ /* for calls from decNumberPower. */ /* ------------------------------------------------------------------ */ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warray-bounds" decNumber * decLnOp(decNumber *res, const decNumber *rhs, decContext *set, uInt *status) { uInt ignore=0; /* working status accumulator */ @@ -5805,6 +5813,7 @@ /* [status is handled by caller] */ return res; } /* decLnOp */ +#pragma clang diagnostic pop /* ------------------------------------------------------------------ */ /* decQuantizeOp -- force exponent to requested value */