Fix readLong() bug where it wasnt throwing an exception on EOF

This commit is contained in:
zzz
2009-01-30 21:25:18 +00:00
parent 4aa9c7fdcf
commit d75e1deae7

View File

@ -344,8 +344,9 @@ public class DataHelper {
long rv = 0; long rv = 0;
for (int i = 0; i < numBytes; i++) { for (int i = 0; i < numBytes; i++) {
long cur = rawStream.read() & 0xFF; long cur = rawStream.read();
if (cur == -1) throw new DataFormatException("Not enough bytes for the field"); if (cur == -1) throw new DataFormatException("Not enough bytes for the field");
cur &= 0xFF;
// we loop until we find a nonzero byte (or we reach the end) // we loop until we find a nonzero byte (or we reach the end)
if (cur != 0) { if (cur != 0) {
// ok, data found, now iterate through it to fill the rv // ok, data found, now iterate through it to fill the rv
@ -355,9 +356,10 @@ public class DataHelper {
cur = cur << shiftAmount; cur = cur << shiftAmount;
rv += cur; rv += cur;
if (j + 1 < remaining) { if (j + 1 < remaining) {
cur = rawStream.read() & 0xFF; cur = rawStream.read();
if (cur == -1) if (cur == -1)
throw new DataFormatException("Not enough bytes for the field"); throw new DataFormatException("Not enough bytes for the field");
cur &= 0xFF;
} }
} }
break; break;