mirror of https://github.com/grpc/grpc-java.git
Fix a bug ByteReadableBufferWrapper. We should set new buffer's limit before changing the original buffer's position
This commit is contained in:
parent
8d0267fc41
commit
52b3db2c06
|
|
@ -288,8 +288,8 @@ public final class ReadableBuffers {
|
|||
public ByteReadableBufferWrapper readBytes(int length) {
|
||||
checkReadable(length);
|
||||
ByteBuffer buffer = bytes.duplicate();
|
||||
bytes.position(bytes.position() + length);
|
||||
buffer.limit(bytes.position() + length);
|
||||
bytes.position(bytes.position() + length);
|
||||
return new ByteReadableBufferWrapper(buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,6 +121,17 @@ public abstract class ReadableBufferTestBase {
|
|||
assertEquals(msg.length() - 2, buffer.readableBytes());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void partialReadToReadableBufferShouldSucceed() {
|
||||
ReadableBuffer buffer = buffer();
|
||||
ReadableBuffer newBuffer = buffer.readBytes(2);
|
||||
assertEquals(2, newBuffer.readableBytes());
|
||||
assertEquals(msg.length() - 2, buffer.readableBytes());
|
||||
byte[] array = new byte[2];
|
||||
newBuffer.readBytes(array, 0, 2);
|
||||
assertArrayEquals(new byte[] {'h', 'e'}, Arrays.copyOfRange(array, 0, 2));
|
||||
}
|
||||
|
||||
protected abstract ReadableBuffer buffer();
|
||||
|
||||
private static String repeatUntilLength(String toRepeat, int length) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue