mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-10 07:39:16 +00:00
ICU-7947 Relax 0-capacity test in previous checkin and fix compiler warnings
X-SVN-Rev: 28636
This commit is contained in:
parent
352a29f8a8
commit
f92222ba98
5 changed files with 10 additions and 10 deletions
|
@ -71,7 +71,7 @@ void UVector::_init(int32_t initialCapacity, UErrorCode &status) {
|
|||
return;
|
||||
}
|
||||
// Fix bogus initialCapacity values; avoid malloc(0) and integer overflow
|
||||
if ((initialCapacity < 1) || (initialCapacity > INT32_MAX / sizeof(UHashTok))) {
|
||||
if ((initialCapacity < 1) || (initialCapacity > (int32_t)(INT32_MAX / sizeof(UHashTok)))) {
|
||||
initialCapacity = DEFAULT_CAPACITY;
|
||||
}
|
||||
elements = (UHashTok *)uprv_malloc(sizeof(UHashTok)*initialCapacity);
|
||||
|
@ -339,7 +339,7 @@ UBool UVector::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
|
|||
if (newCap < minimumCapacity) {
|
||||
newCap = minimumCapacity;
|
||||
}
|
||||
if (newCap > INT32_MAX / sizeof(UHashTok)) { // integer overflow check
|
||||
if (newCap > (int32_t)(INT32_MAX / sizeof(UHashTok))) { // integer overflow check
|
||||
// We keep the original memory contents on bad minimumCapacity.
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return FALSE;
|
||||
|
|
|
@ -52,7 +52,7 @@ void UVector32::_init(int32_t initialCapacity, UErrorCode &status) {
|
|||
if (maxCapacity>0 && maxCapacity<initialCapacity) {
|
||||
initialCapacity = maxCapacity;
|
||||
}
|
||||
if (initialCapacity > INT32_MAX / sizeof(int32_t)) {
|
||||
if (initialCapacity > (int32_t)(INT32_MAX / sizeof(int32_t))) {
|
||||
initialCapacity = uprv_min(DEFAULT_CAPACITY, maxCapacity);
|
||||
}
|
||||
elements = (int32_t *)uprv_malloc(sizeof(int32_t)*initialCapacity);
|
||||
|
@ -218,7 +218,7 @@ UBool UVector32::expandCapacity(int32_t minimumCapacity, UErrorCode &status) {
|
|||
if (maxCapacity > 0 && newCap > maxCapacity) {
|
||||
newCap = maxCapacity;
|
||||
}
|
||||
if (newCap > INT32_MAX / sizeof(int32_t)) { // integer overflow check
|
||||
if (newCap > (int32_t)(INT32_MAX / sizeof(int32_t))) { // integer overflow check
|
||||
// We keep the original memory contents on bad minimumCapacity/maxCapacity.
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return FALSE;
|
||||
|
@ -239,7 +239,7 @@ void UVector32::setMaxCapacity(int32_t limit) {
|
|||
if (limit < 0) {
|
||||
limit = 0;
|
||||
}
|
||||
if (limit > INT32_MAX / sizeof(int32_t)) { // integer overflow check for realloc
|
||||
if (limit > (int32_t)(INT32_MAX / sizeof(int32_t))) { // integer overflow check for realloc
|
||||
// Something is very wrong, don't realloc, leave capacity and maxCapacity unchanged
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -211,7 +211,7 @@ public:
|
|||
// UVector32 inlines
|
||||
|
||||
inline UBool UVector32::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
|
||||
if ((minimumCapacity > 0) && (capacity >= minimumCapacity)) {
|
||||
if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return expandCapacity(minimumCapacity, status);
|
||||
|
|
|
@ -49,7 +49,7 @@ void UVector64::_init(int32_t initialCapacity, UErrorCode &status) {
|
|||
if (maxCapacity>0 && maxCapacity<initialCapacity) {
|
||||
initialCapacity = maxCapacity;
|
||||
}
|
||||
if (initialCapacity > INT32_MAX / sizeof(int64_t)) {
|
||||
if (initialCapacity > (int32_t)(INT32_MAX / sizeof(int64_t))) {
|
||||
initialCapacity = uprv_min(DEFAULT_CAPACITY, maxCapacity);
|
||||
}
|
||||
elements = (int64_t *)uprv_malloc(sizeof(int64_t)*initialCapacity);
|
||||
|
@ -136,7 +136,7 @@ UBool UVector64::expandCapacity(int32_t minimumCapacity, UErrorCode &status) {
|
|||
if (maxCapacity > 0 && newCap > maxCapacity) {
|
||||
newCap = maxCapacity;
|
||||
}
|
||||
if (newCap > INT32_MAX / sizeof(int64_t)) { // integer overflow check
|
||||
if (newCap > (int32_t)(INT32_MAX / sizeof(int64_t))) { // integer overflow check
|
||||
// We keep the original memory contents on bad minimumCapacity/maxCapacity.
|
||||
status = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
return FALSE;
|
||||
|
@ -157,7 +157,7 @@ void UVector64::setMaxCapacity(int32_t limit) {
|
|||
if (limit < 0) {
|
||||
limit = 0;
|
||||
}
|
||||
if (limit > INT32_MAX / sizeof(int64_t)) { // integer overflow check for realloc
|
||||
if (limit > (int32_t)(INT32_MAX / sizeof(int64_t))) { // integer overflow check for realloc
|
||||
// Something is very wrong, don't realloc, leave capacity and maxCapacity unchanged
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -200,7 +200,7 @@ public:
|
|||
// UVector64 inlines
|
||||
|
||||
inline UBool UVector64::ensureCapacity(int32_t minimumCapacity, UErrorCode &status) {
|
||||
if ((minimumCapacity > 0) && (capacity >= minimumCapacity)) {
|
||||
if ((minimumCapacity >= 0) && (capacity >= minimumCapacity)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return expandCapacity(minimumCapacity, status);
|
||||
|
|
Loading…
Add table
Reference in a new issue