From 8e1de6012c52210792f39d96f89708142d79b35b Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Fri, 17 Oct 2014 09:36:16 -0400 Subject: [PATCH] make somewhat less buggy --- compiler/src/test/scala/org/capnproto/EncodingTest.scala | 4 ++-- runtime/src/main/java/org/capnproto/WireHelpers.java | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/compiler/src/test/scala/org/capnproto/EncodingTest.scala b/compiler/src/test/scala/org/capnproto/EncodingTest.scala index dac188d..1892b16 100644 --- a/compiler/src/test/scala/org/capnproto/EncodingTest.scala +++ b/compiler/src/test/scala/org/capnproto/EncodingTest.scala @@ -46,12 +46,12 @@ class EncodingSuite extends FunSuite { test("Setters") { val message = new MessageBuilder(); val allTypes = message.initRoot(TestAllTypes.factory); - TestUtil.initTestMessage(allTypes); + //TestUtil.initTestMessage(allTypes); val message2 = new MessageBuilder(); val allTypes2 = message.initRoot(TestAllTypes.factory); - //allTypes2.setStructField(allTypes.asReader()); + allTypes2.setStructField(allTypes.asReader()); // ... //TestUtil.checkTestMessage(allTypes); diff --git a/runtime/src/main/java/org/capnproto/WireHelpers.java b/runtime/src/main/java/org/capnproto/WireHelpers.java index 6c0bf16..fe3be60 100644 --- a/runtime/src/main/java/org/capnproto/WireHelpers.java +++ b/runtime/src/main/java/org/capnproto/WireHelpers.java @@ -522,7 +522,7 @@ final class WireHelpers { copyPointer(allocation.segment, pointerSection + i, value.segment, value.pointers + i, value.nestingLimit); } - throw new Error("setStructPointer is unimplemented"); + return allocation.segment; }; static SegmentBuilder setListPointer(SegmentBuilder segment, int refOffset, ListReader value) { @@ -562,7 +562,6 @@ final class WireHelpers { //# List of structs. AllocateResult allocation = allocate(refOffset, segment, totalSize + Constants.POINTER_SIZE_IN_WORDS, WirePointer.LIST); ListPointer.setInlineComposite(allocation.segment.buffer, allocation.refOffset, totalSize); - short dataSize = (short)roundBitsUpToWords(value.structDataSize); short pointerCount = value.structPointerCount; @@ -594,10 +593,10 @@ final class WireHelpers { static void memcpy(ByteBuffer dstBuffer, int dstByteOffset, ByteBuffer srcBuffer, int srcByteOffset, int length) { ByteBuffer dstDup = dstBuffer.duplicate(); dstDup.position(dstByteOffset); - dstDup.limit(length); + dstDup.limit(dstByteOffset + length); ByteBuffer srcDup = srcBuffer.duplicate(); srcDup.position(srcByteOffset); - srcDup.limit(length); + srcDup.limit(srcByteOffset + length); dstDup.put(srcDup); }