BytesWritable causes OOME when array size reaches Integer.MAX_VALUE. (#393)
This commit is contained in:
parent
b214bbd2d9
commit
d60496e6c6
@ -38,6 +38,7 @@
|
||||
@InterfaceStability.Stable
|
||||
public class BytesWritable extends BinaryComparable
|
||||
implements WritableComparable<BinaryComparable> {
|
||||
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
|
||||
private static final int LENGTH_BYTES = 4;
|
||||
|
||||
private static final byte[] EMPTY_BYTES = new byte[0];
|
||||
@ -126,7 +127,7 @@ public int getSize() {
|
||||
public void setSize(int size) {
|
||||
if (size > getCapacity()) {
|
||||
// Avoid overflowing the int too early by casting to a long.
|
||||
long newSize = Math.min(Integer.MAX_VALUE, (3L * size) / 2L);
|
||||
long newSize = Math.min(MAX_ARRAY_SIZE, (3L * size) / 2L);
|
||||
setCapacity((int) newSize);
|
||||
}
|
||||
this.size = size;
|
||||
|
Loading…
Reference in New Issue
Block a user