From ef61a1efa7b3be9ae296ff0a6de48e1bfe8f2269 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 27 Nov 2017 21:26:24 -0500 Subject: [PATCH] Read just the amount of bytes available --- .../java/sbt/internal/NGWin32NamedPipeSocket.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/main-command/src/main/java/sbt/internal/NGWin32NamedPipeSocket.java b/main-command/src/main/java/sbt/internal/NGWin32NamedPipeSocket.java index 072ed3901..b22bb6bbf 100644 --- a/main-command/src/main/java/sbt/internal/NGWin32NamedPipeSocket.java +++ b/main-command/src/main/java/sbt/internal/NGWin32NamedPipeSocket.java @@ -1,4 +1,5 @@ // Copied from https://github.com/facebook/nailgun/blob/af623fddedfdca010df46302a0711ce0e2cc1ba6/nailgun-server/src/main/java/com/martiansoftware/nailgun/NGWin32NamedPipeSocket.java +// Made change in `read` to read just the amount of bytes available. /* @@ -124,12 +125,10 @@ public class NGWin32NamedPipeSocket extends Socket { int lastError = API.GetLastError(); throw new IOException("GetOverlappedResult() failed for read operation: " + lastError); } - if (read.getValue() != len) { - throw new IOException("ReadFile() read less bytes than requested"); - } - byte[] byteArray = readBuffer.getByteArray(0, len); - System.arraycopy(byteArray, 0, b, off, len); - return len; + int actualLen = read.getValue(); + byte[] byteArray = readBuffer.getByteArray(0, actualLen); + System.arraycopy(byteArray, 0, b, off, actualLen); + return actualLen; } }