The analyzer has detected that an integer value is cast to a data type with a smaller size, which leads to an overflow. This happens because a source value is outside the valid range of the target type.
The example of such an overflow:
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;
void makeChunks(int fileSize) {
int chunkSize = Math.min(fileSize, (int) MAX_CHUNK_SIZE);
....
}
The 4L * 1024 * 1024 * 1024 expression equals 4,294,967,296 (2^32), which is then cast to int. This value exceeds the valid int range ([-2^31..2^31-1]). As a result, the value becomes 0 instead of the expected maximum.
To avoid the overflow, use the long type for all variables and parameters involved in the calculations:
static final long MAX_CHUNK_SIZE = 4L * 1024 * 1024 * 1024;
void makeChunks(long fileSize) {
long chunkSize = Math.min(fileSize, MAX_CHUNK_SIZE);
....
}
This diagnostic is classified as:
|
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders:
Take
a chance!