summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2024-03-08 09:23:22 +0100
committerBjørn Christian Seime <bjorncs@vespa.ai>2024-03-08 09:23:22 +0100
commit80f424d4c6aeca920f553c5894ad8b27c9cbe8be (patch)
tree03aa3f7850704645b78009ffe3aa5a5cda903858 /jdisc_core
parent38554f48dd242c4a9d269927b374708ba4d97bdf (diff)
Fix NPE bug related to mark/reset
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
index 45971784aa3..86cd685f869 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java
@@ -109,9 +109,10 @@ public class UnsafeContentInputStream extends InputStream {
if (marked == null) {
throw new IOException("mark has not been called, or too much has been read since marked.");
}
- ByteBuffer newBuf = ByteBuffer.allocate(readSinceMarked + currBuf.remaining());
+ var remainingInCurrent = currBuf == null ? 0 : currBuf.remaining();
+ ByteBuffer newBuf = ByteBuffer.allocate(readSinceMarked + remainingInCurrent);
newBuf.put(marked, 0, readSinceMarked);
- newBuf.put(currBuf);
+ if (remainingInCurrent > 0) newBuf.put(currBuf);
newBuf.flip();
currBuf = newBuf;
marked = null;