From 08009f3f628e9c67f54535ae477b4dec4750477c Mon Sep 17 00:00:00 2001 From: stepeos Date: Mon, 21 Oct 2024 00:00:38 +0200 Subject: [PATCH] fix copying to not overwrite before offset --- runtime/src/main/java/org/capnproto/WireHelpers.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index 08370ba4..362484d2 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -850,7 +850,14 @@ static Data.Builder setDataPointer(int refOffset, SegmentBuilder segment, Data.Reader value) { Data.Builder builder = initDataPointer(refOffset, segment, value.size); + int originalSrcPosition = value.buffer.position(); + int originalDstPosition = builder.buffer.position(); + builder.buffer.position(builder.offset); + //# copy from src offset until src end builder.buffer.put(value.buffer); + //# restore original positions + builder.buffer.position(originalDstPosition); + value.buffer.position(originalSrcPosition); return builder; }