From 1bc04adaffa88e381d5df7b8ccb88670aaa02022 Mon Sep 17 00:00:00 2001 From: Davy Landman Date: Fri, 20 Sep 2024 14:08:33 +0200 Subject: [PATCH] Simplified buffer code --- .../vallang/impl/primitive/StringValue.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/usethesource/vallang/impl/primitive/StringValue.java b/src/main/java/io/usethesource/vallang/impl/primitive/StringValue.java index 48b4e08c..5dce7d71 100644 --- a/src/main/java/io/usethesource/vallang/impl/primitive/StringValue.java +++ b/src/main/java/io/usethesource/vallang/impl/primitive/StringValue.java @@ -1021,18 +1021,15 @@ public int read(char[] cbuf, int off, int len) throws IOException { if (off < 0 || len < 0 || len > cbuf.length + off) { throw new IndexOutOfBoundsException(); } - int written = 0; - while (written < len) { - // we try to read as much as we can from the chunks of the buffer + var target = CharBuffer.wrap(cbuf, off, len); + while (target.hasRemaining()) { var actualBuffer = getBuffer(); if (!actualBuffer.hasRemaining()) { break; } - int toRead = Math.min(len - written, actualBuffer.remaining()); - actualBuffer.get(cbuf, off + written, toRead); - written += toRead; + actualBuffer.read(target); } - return written == 0 ? -1 : written; + return target.position() == off ? -1 : (len - target.remaining()); } @Override