From a34fe899da8addfedd9201d49c6092c212e8a031 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 20 Dec 2019 20:04:48 -0800 Subject: [PATCH] minor --- src/data.cpp | 5 ++++- src/dataencode.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/data.cpp b/src/data.cpp index 4c7fb67..dcfbb5f 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -60,7 +60,7 @@ Value::Value(const std::shared_ptr& desc) auto& mem = top->members.at(cfld->offset-desc->offset); mem.top = top.get(); mem.init(cfld); - top->member_indicies[cfld->offset] = pair.second; + top->member_indicies[cfld->offset-desc->offset] = pair.second; } this->desc = desc.get(); @@ -274,6 +274,9 @@ bool copyInScalar(Dest& dest, const void *ptr, StoreType type) void Value::copyIn(const void *ptr, StoreType type) { + // control flow should either throw NoField or NoConvert, or update 'store' and + // reach the mark() at the end. + if(!desc) throw NoField(); diff --git a/src/dataencode.cpp b/src/dataencode.cpp index 03dc3ae..77d9084 100644 --- a/src/dataencode.cpp +++ b/src/dataencode.cpp @@ -696,7 +696,7 @@ void from_wire_valid(Buffer& buf, TypeStore& ctxt, Value& val) return; for(auto bit = top->valid.findSet(desc->offset-top->desc->offset); - bitnext_offset-top->desc->offset; + bit<(desc->next_offset-top->desc->offset); bit = top->valid.findSet(bit+1)) { std::shared_ptr cstore(store, store.get()+bit-desc->offset);