Skip to content

Commit 79ede2b

Browse files
committed
Fix copyTo impl
1 parent 7ec494e commit 79ede2b

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

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

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ public MessageBufferU slice(int offset, int length) {
2727
return this;
2828
else {
2929
checkArgument(offset + length <= size());
30-
reference.position(offset);
31-
reference.limit(offset + length);
32-
return new MessageBufferU(reference.slice());
30+
try {
31+
reference.position(offset);
32+
reference.limit(offset + length);
33+
return new MessageBufferU(reference.slice());
34+
}
35+
finally {
36+
resetBufferPosition();
37+
}
3338
}
3439
}
3540

@@ -68,9 +73,9 @@ public double getDouble(int index) {
6873
}
6974
@Override
7075
public void getBytes(int index, int len, ByteBuffer dst) {
71-
reference.position(index);
72-
reference.limit(index+len);
7376
try {
77+
reference.position(index);
78+
reference.limit(index+len);
7479
dst.put(reference);
7580
}
7681
finally {
@@ -150,8 +155,8 @@ public void putByteBuffer(int index, ByteBuffer src, int len) {
150155

151156
@Override
152157
public void putBytes(int index, byte[] src, int srcOffset, int length) {
153-
reference.position(index);
154158
try {
159+
reference.position(index);
155160
reference.put(src, srcOffset, length);
156161
}
157162
finally {
@@ -161,10 +166,12 @@ public void putBytes(int index, byte[] src, int srcOffset, int length) {
161166

162167
@Override
163168
public void copyTo(int index, MessageBuffer dst, int offset, int length) {
164-
if(dst.hasArray()) {
165-
System.arraycopy(this.base, this.offset() + index, dst.getBase(), offset, length);
166-
} else {
167-
dst.putBytes(offset, this.getArray(), this.offset(), length);
169+
try {
170+
reference.position(index);
171+
dst.putByteBuffer(offset, reference, length);
172+
}
173+
finally {
174+
resetBufferPosition();
168175
}
169176
}
170177
@Override

0 commit comments

Comments
 (0)