diff options
author | Bjørn Christian Seime <bjorn.christian@seime.no> | 2024-03-08 09:32:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-08 09:32:11 +0100 |
commit | 3ede5019a6fe0881917b165166f413c532fe4bc0 (patch) | |
tree | 03aa3f7850704645b78009ffe3aa5a5cda903858 | |
parent | 38554f48dd242c4a9d269927b374708ba4d97bdf (diff) | |
parent | 80f424d4c6aeca920f553c5894ad8b27c9cbe8be (diff) |
Merge pull request #30514 from vespa-engine/bjorncs/fix
Fix NPE bug related to mark/reset
-rw-r--r-- | jdisc_core/src/main/java/com/yahoo/jdisc/handler/UnsafeContentInputStream.java | 5 |
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; |