Skip to content

Commit 23af162

Browse files
committed
Fix off-by-one errors in the byte reader
1 parent ade1823 commit 23af162

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

core/shared/src/main/scala/eu/joaocosta/minart/internal/ByteReader.scala

+13-5
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ private[minart] object ByteReader {
3232
val byteArr = Array.ofDim[Byte](n)
3333
var read = bytes.read(byteArr)
3434
while (read >= 0 && read < n) {
35-
byteArr(read) = bytes.read().toByte
36-
read += 1
35+
val byte = bytes.read()
36+
if (byte == -1) read = -1
37+
else {
38+
byteArr(read) = byte.toByte
39+
read += 1
40+
}
3741
}
3842
bytes -> byteArr.map(b => java.lang.Byte.toUnsignedInt(b))
3943
}
@@ -43,8 +47,12 @@ private[minart] object ByteReader {
4347
val byteArr = Array.ofDim[Byte](n)
4448
var read = bytes.read(byteArr)
4549
while (read >= 0 && read < n) {
46-
byteArr(read) = bytes.read().toByte
47-
read += 1
50+
val byte = bytes.read()
51+
if (byte == -1) read = -1
52+
else {
53+
byteArr(read) = byte.toByte
54+
read += 1
55+
}
4856
}
4957
bytes -> byteArr
5058
}
@@ -107,7 +115,7 @@ private[minart] object ByteReader {
107115
else {
108116
hasBuffer = false
109117
b(0) = buffer.toByte
110-
inner.read(b, 1, b.size - 1)
118+
inner.read(b, 1, b.size - 1) + 1
111119
}
112120
}
113121
override def reset(): Unit = ()

0 commit comments

Comments
 (0)