not properly handle 8-bit unsigned data as it blindly
casts the byte to an int, which java most helpfully
promotes to a signed type. This causes problems when
you can only return -1 to indicated EOF.
The following patch fixes the bug and has been tested
locally on image data.
Chad David
*/
public int read() throws java.io.IOException {
try {
- if(buffer==null || bpos>=buffer.length) {
+ if (buffer == null || bpos >= buffer.length) {
buffer=lo.read(bsize);
bpos=0;
}
// Handle EOF
- if(bpos>=buffer.length)
+ if(bpos >= buffer.length) {
return -1;
+ }
+
+ int ret = (buffer[bpos] & 0x7F);
+ if ((buffer[bpos] &0x80) == 0x80) {
+ ret |= 0x80;
+ }
- return (int) buffer[bpos++];
+ bpos++;
+
+ return ret;
} catch(SQLException se) {
throw new IOException(se.toString());
}
public boolean markSupported() {
return true;
}
-
-}
\ No newline at end of file
+}