Fixing an undetected integer overflow error causing a misleading ArrayOutOfBounds exception.
Operation :
len * Double.SIZE / 8
is made in integer precision executed from left to right
( (len* Double.SIZE) / 8)
The first part may overflow on large integer.
On way to reduce the errors would have been to write it :
len * (Double.SIZE / 8)
To be warned if an overflow happens I've choose :
Math.multiplyExact(len, Double.SIZE / 8)
Fixing an undetected integer overflow error causing a misleading ArrayOutOfBounds exception.
Operation :
len * Double.SIZE / 8
is made in integer precision executed from left to right( (len* Double.SIZE) / 8)
The first part may overflow on large integer. On way to reduce the errors would have been to write it :len * (Double.SIZE / 8)
To be warned if an overflow happens I've choose :
Math.multiplyExact(len, Double.SIZE / 8)