Skip to content

Commit 35db8d6

Browse files
committed
Merge pull request msgpack#191 from xerial/v07-develop
msgpack#188: Fix MessageBuffer.wrap(ByteBuffer) to consider position() and remaining()
2 parents 5cf58df + a56e3a2 commit 35db8d6

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
@@ -280,7 +280,7 @@ public static MessageBuffer wrap(byte[] array) {
280280
}
281281

282282
public static MessageBuffer wrap(ByteBuffer bb) {
283-
return newMessageBuffer(bb);
283+
return newMessageBuffer(bb).slice(bb.position(), bb.remaining());
284284
}
285285

286286
/**

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)