ICU-7947 Relax 0-capacity test in previous checkin and fix compiler warnings

X-SVN-Rev: 28636
This commit is contained in:
Michael Grady 2010-09-17 01:53:01 +00:00
parent 352a29f8a8
commit f92222ba98
5 changed files with 10 additions and 10 deletions

View file

@ -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;

View file

@ -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;
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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);