diff --git a/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java b/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java index 2480e41fa..1d8b64519 100644 --- a/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java +++ b/src/main/java/ru/yandex/clickhouse/response/StreamSplitter.java @@ -108,7 +108,11 @@ private void shiftOrResize() { posNext = 0; } else { byte[] oldBuf = buf; - buf = new byte[buf.length*2]; + if (buf.length > (Integer.MAX_VALUE - 2) / 2) { + buf = new byte[Integer.MAX_VALUE - 2];// Some platforms will throw 'Requested array size exceeds VM limit' when maximum length of array is Integer.MAX_VALUE - 1 + } else { + buf = new byte[buf.length * 2]; + } System.arraycopy(oldBuf, 0, buf, 0, oldBuf.length); } }