From 68de6c05a776b53cb5fcf4b7759039e22f6541a7 Mon Sep 17 00:00:00 2001 From: hedgecrw85 Date: Wed, 3 Jan 2018 12:00:37 -0600 Subject: [PATCH] Ensure the InputStream read() function does not return 0-length data --- src/main/java/com/fazecast/jSerialComm/SerialPort.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fazecast/jSerialComm/SerialPort.java b/src/main/java/com/fazecast/jSerialComm/SerialPort.java index f0375ab..56bafaf 100644 --- a/src/main/java/com/fazecast/jSerialComm/SerialPort.java +++ b/src/main/java/com/fazecast/jSerialComm/SerialPort.java @@ -1120,9 +1120,13 @@ public final class SerialPort return 0; byte[] buffer = new byte[len]; - int numRead = readBytes(portHandle, buffer, len); - if (numRead > 0) - System.arraycopy(buffer, 0, b, off, numRead); + int numRead = 0; + while (isOpened && (numRead == 0)) + { + numRead = readBytes(portHandle, buffer, len); + if (numRead > 0) + System.arraycopy(buffer, 0, buffer, off, numRead); + } return numRead; }