Skip to content

Commit a56e3a2

Browse files
committed
msgpack#188: Fix MessageBuffer.wrap(ByteBuffer) to consider position() and remaining()
1 parent b57753f commit a56e3a2

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

msgpack-core/src/main/java/org/msgpack/core/MessagePacker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ public MessagePacker writePayload(ByteBuffer src) throws IOException {
506506
flush();
507507

508508
// Wrap the input source as a MessageBuffer
509-
MessageBuffer wrapped = MessageBuffer.wrap(src).slice(src.position(), src.remaining());
509+
MessageBuffer wrapped = MessageBuffer.wrap(src);
510510
// Then, dump the source data to the output
511511
out.flush(wrapped);
512512
src.position(src.limit());

msgpack-core/src/main/java/org/msgpack/core/buffer/MessageBuffer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ public static MessageBuffer wrap(byte[] array) {
256256
}
257257

258258
public static MessageBuffer wrap(ByteBuffer bb) {
259-
return newMessageBuffer(bb);
259+
return newMessageBuffer(bb).slice(bb.position(), bb.remaining());
260260
}
261261

262262
/**

msgpack-core/src/test/scala/org/msgpack/core/buffer/MessageBufferTest.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ class MessageBufferTest extends MessagePackSpec {
1111

1212
"MessageBuffer" should {
1313

14+
"wrap ByteBuffer considering position and remaining values" taggedAs("wrap-bb") in {
15+
val d = Array[Byte](10,11,12,13,14,15,16,17,18,19)
16+
val subset = ByteBuffer.wrap(d, 2, 2)
17+
val mb = MessageBuffer.wrap(subset)
18+
mb.getByte(0) shouldBe 12
19+
mb.size() shouldBe 2
20+
}
21+
1422
"have better performance than ByteBuffer" in {
1523

1624
val N = 1000000

0 commit comments

Comments
 (0)