@@ -877,7 +877,7 @@ public byte readByte() {
877877
878878 @ Override
879879 public byte getByte (int roff ) {
880- return prepRead (roff , Byte .BYTES ).getByte (subOffset );
880+ return prepGet (roff , Byte .BYTES ).getByte (subOffset );
881881 }
882882
883883 @ Override
@@ -887,7 +887,7 @@ public int readUnsignedByte() {
887887
888888 @ Override
889889 public int getUnsignedByte (int roff ) {
890- return prepRead (roff , Byte .BYTES ).getUnsignedByte (subOffset );
890+ return prepGet (roff , Byte .BYTES ).getUnsignedByte (subOffset );
891891 }
892892
893893 @ Override
@@ -921,7 +921,7 @@ public char readChar() {
921921
922922 @ Override
923923 public char getChar (int roff ) {
924- return prepRead (roff , 2 ).getChar (subOffset );
924+ return prepGet (roff , 2 ).getChar (subOffset );
925925 }
926926
927927 @ Override
@@ -943,7 +943,7 @@ public short readShort() {
943943
944944 @ Override
945945 public short getShort (int roff ) {
946- return prepRead (roff , Short .BYTES ).getShort (subOffset );
946+ return prepGet (roff , Short .BYTES ).getShort (subOffset );
947947 }
948948
949949 @ Override
@@ -953,7 +953,7 @@ public int readUnsignedShort() {
953953
954954 @ Override
955955 public int getUnsignedShort (int roff ) {
956- return prepRead (roff , Short .BYTES ).getUnsignedShort (subOffset );
956+ return prepGet (roff , Short .BYTES ).getUnsignedShort (subOffset );
957957 }
958958
959959 @ Override
@@ -987,7 +987,7 @@ public int readMedium() {
987987
988988 @ Override
989989 public int getMedium (int roff ) {
990- return prepRead (roff , 3 ).getMedium (subOffset );
990+ return prepGet (roff , 3 ).getMedium (subOffset );
991991 }
992992
993993 @ Override
@@ -997,7 +997,7 @@ public int readUnsignedMedium() {
997997
998998 @ Override
999999 public int getUnsignedMedium (int roff ) {
1000- return prepRead (roff , 3 ).getMedium (subOffset );
1000+ return prepGet (roff , 3 ).getMedium (subOffset );
10011001 }
10021002
10031003 @ Override
@@ -1031,7 +1031,7 @@ public int readInt() {
10311031
10321032 @ Override
10331033 public int getInt (int roff ) {
1034- return prepRead (roff , Integer .BYTES ).getInt (subOffset );
1034+ return prepGet (roff , Integer .BYTES ).getInt (subOffset );
10351035 }
10361036
10371037 @ Override
@@ -1041,7 +1041,7 @@ public long readUnsignedInt() {
10411041
10421042 @ Override
10431043 public long getUnsignedInt (int roff ) {
1044- return prepRead (roff , Integer .BYTES ).getUnsignedInt (subOffset );
1044+ return prepGet (roff , Integer .BYTES ).getUnsignedInt (subOffset );
10451045 }
10461046
10471047 @ Override
@@ -1075,7 +1075,7 @@ public float readFloat() {
10751075
10761076 @ Override
10771077 public float getFloat (int roff ) {
1078- return prepRead (roff , Float .BYTES ).getFloat (subOffset );
1078+ return prepGet (roff , Float .BYTES ).getFloat (subOffset );
10791079 }
10801080
10811081 @ Override
@@ -1097,7 +1097,7 @@ public long readLong() {
10971097
10981098 @ Override
10991099 public long getLong (int roff ) {
1100- return prepRead (roff , Long .BYTES ).getLong (subOffset );
1100+ return prepGet (roff , Long .BYTES ).getLong (subOffset );
11011101 }
11021102
11031103 @ Override
@@ -1119,7 +1119,7 @@ public double readDouble() {
11191119
11201120 @ Override
11211121 public double getDouble (int roff ) {
1122- return prepRead (roff , Double .BYTES ).getDouble (subOffset );
1122+ return prepGet (roff , Double .BYTES ).getDouble (subOffset );
11231123 }
11241124
11251125 @ Override
@@ -1242,6 +1242,17 @@ private void checkReadBounds(int index, int size) {
12421242 }
12431243 }
12441244
1245+ private BufferAccessors prepGet (int index , int size ) {
1246+ checkGetBounds (index , size );
1247+ return chooseBuffer (index , size );
1248+ }
1249+
1250+ private void checkGetBounds (int index , int size ) {
1251+ if (index < 0 || capacity < index + size ) {
1252+ throw indexOutOfBounds (index , false );
1253+ }
1254+ }
1255+
12451256 private BufferAccessors prepWrite (int size ) {
12461257 var buf = prepWrite (woff , size );
12471258 woff += size ;
@@ -1268,7 +1279,7 @@ private RuntimeException indexOutOfBounds(int index, boolean write) {
12681279 }
12691280 return new IndexOutOfBoundsException (
12701281 "Index " + index + " is out of bounds: [read 0 to " + woff + ", write 0 to " +
1271- ( capacity - 1 ) + "]." );
1282+ capacity + "]." );
12721283 }
12731284
12741285 private static IllegalStateException bufferIsClosed () {
0 commit comments