Skip to content

Commit ac33057

Browse files
committed
Fix MultiBuffer decode test
1 parent 610a801 commit ac33057

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/main/java/com/maxmind/db/MultiBuffer.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,15 @@ long readFrom(FileChannel channel, int chunkSize) throws IOException {
279279
@Override
280280
public String decode(CharsetDecoder decoder)
281281
throws CharacterCodingException {
282+
return this.decode(decoder, Integer.MAX_VALUE);
283+
}
284+
285+
String decode(CharsetDecoder decoder, int maxCharBufferSize)
286+
throws CharacterCodingException {
282287
long remainingBytes = limit - position;
283288

284-
// Cannot allocate more than Integer.MAX_VALUE for CharBuffer
285-
if (remainingBytes > Integer.MAX_VALUE) {
289+
// Cannot allocate more than maxCharBufferSize for CharBuffer
290+
if (remainingBytes > maxCharBufferSize) {
286291
throw new IllegalStateException(
287292
"Decoding region too large to fit in a CharBuffer: " + remainingBytes
288293
);

src/test/java/com/maxmind/db/MultiBufferTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,9 +321,11 @@ public void testDecodeString() throws CharacterCodingException {
321321

322322
@Test
323323
public void testDecodeStringTooLarge() {
324-
MultiBuffer buffer = new MultiBuffer((long) Integer.MAX_VALUE + 1, 1024);
324+
MultiBuffer buffer = createBuffer(65);
325+
buffer.position(62);
326+
buffer.limit(89);
325327
assertThrows(IllegalStateException.class, () ->
326-
buffer.decode(StandardCharsets.UTF_8.newDecoder()));
328+
buffer.decode(StandardCharsets.UTF_8.newDecoder(), 20));
327329
}
328330

329331
@Test

0 commit comments

Comments
 (0)