java: fixes fatal offset calculation bugs on BufferedUnpackerIMPL.unpackInt()

This commit is contained in:
frsyuki 2010-07-24 18:07:22 +09:00
parent f8a016edb5
commit 227c168b65

View File

@ -103,7 +103,7 @@ abstract class BufferedUnpackerImpl extends UnpackerImpl {
case 0xcc: // unsigned int 8 case 0xcc: // unsigned int 8
more(2); more(2);
advance(2); advance(2);
return (int)((short)buffer[offset+1] & 0xff); return (int)((short)(buffer[offset-1]) & 0xff);
case 0xcd: // unsigned int 16 case 0xcd: // unsigned int 16
more(3); more(3);
castBuffer.rewind(); castBuffer.rewind();
@ -137,7 +137,7 @@ abstract class BufferedUnpackerImpl extends UnpackerImpl {
case 0xd0: // signed int 8 case 0xd0: // signed int 8
more(2); more(2);
advance(2); advance(2);
return (int)buffer[offset+1]; return (int)buffer[offset-1];
case 0xd1: // signed int 16 case 0xd1: // signed int 16
more(3); more(3);
castBuffer.rewind(); castBuffer.rewind();
@ -178,7 +178,7 @@ abstract class BufferedUnpackerImpl extends UnpackerImpl {
case 0xcc: // unsigned int 8 case 0xcc: // unsigned int 8
more(2); more(2);
advance(2); advance(2);
return (long)((short)buffer[offset+1] & 0xff); return (long)((short)(buffer[offset-1]) & 0xff);
case 0xcd: // unsigned int 16 case 0xcd: // unsigned int 16
more(3); more(3);
castBuffer.rewind(); castBuffer.rewind();
@ -207,7 +207,7 @@ abstract class BufferedUnpackerImpl extends UnpackerImpl {
case 0xd0: // signed int 8 case 0xd0: // signed int 8
more(2); more(2);
advance(2); advance(2);
return (long)buffer[offset+1]; return (long)buffer[offset-1];
case 0xd1: // signed int 16 case 0xd1: // signed int 16
more(3); more(3);
castBuffer.rewind(); castBuffer.rewind();