| 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 */ |