diff --git a/src/pvxs/data.h b/src/pvxs/data.h index f4bdeaf..114552f 100644 --- a/src/pvxs/data.h +++ b/src/pvxs/data.h @@ -243,6 +243,10 @@ private: public: struct Helper; + //! Empty/invalid Member + inline + Member() :code(TypeCode::Null) {} + //! Member for non-Compund //! @pre code.kind()!=Kind::Compound inline diff --git a/src/type.cpp b/src/type.cpp index 2e1aac6..540c542 100644 --- a/src/type.cpp +++ b/src/type.cpp @@ -126,6 +126,8 @@ void Member::Helper::node_validate(const Member* parent, const std::string& id, { if(!id.empty() && code.scalarOf()!=TypeCode::Struct && code.scalarOf()!=TypeCode::Union) throw std::logic_error("Only Struct or Union may have an ID"); + else if(!code.valid()) + throw std::logic_error("Invalid TypeCode"); if(parent) { auto c = parent->code.scalarOf(); if(c!=TypeCode::Struct && c!=TypeCode::Union)