From 3c6d02ecdd387562a2c1e5e76936dea2ad6c9a82 Mon Sep 17 00:00:00 2001 From: David Renshaw Date: Thu, 4 Sep 2014 15:25:56 -0400 Subject: [PATCH] add some null checks --- .../java/org/capnproto/PointerReader.java | 26 +++++++++++++------ .../java/org/capnproto/SegmentReader.java | 2 ++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/runtime/src/main/java/org/capnproto/PointerReader.java b/runtime/src/main/java/org/capnproto/PointerReader.java index 0e0bc78..fbaef62 100644 --- a/runtime/src/main/java/org/capnproto/PointerReader.java +++ b/runtime/src/main/java/org/capnproto/PointerReader.java @@ -29,17 +29,27 @@ public final class PointerReader { } public StructReader getStruct() { - return WireHelpers.readStructPointer(this.segment, - this.pointer, - this.nestingLimit); + if (this.segment == null) { + return WireHelpers.readStructPointer(SegmentReader.EMPTY, 0, this.nestingLimit); + } else { + return WireHelpers.readStructPointer(this.segment, + this.pointer, + this.nestingLimit); + } } public ListReader getList(byte expectedElementSize) { - // TODO check nullness - return WireHelpers.readListPointer(this.segment, - this.pointer, - expectedElementSize, - this.nestingLimit); + if (this.segment == null) { + return WireHelpers.readListPointer(SegmentReader.EMPTY, + 0, + expectedElementSize, + this.nestingLimit); + } else { + return WireHelpers.readListPointer(this.segment, + this.pointer, + expectedElementSize, + this.nestingLimit); + } } public Text.Reader getText() { diff --git a/runtime/src/main/java/org/capnproto/SegmentReader.java b/runtime/src/main/java/org/capnproto/SegmentReader.java index 7a59e2e..0ffb294 100644 --- a/runtime/src/main/java/org/capnproto/SegmentReader.java +++ b/runtime/src/main/java/org/capnproto/SegmentReader.java @@ -13,4 +13,6 @@ public class SegmentReader { this.buffer = buffer; this.arena = arena; } + + public static final SegmentReader EMPTY = new SegmentReader(ByteBuffer.allocate(8), null); }