diff --git a/src/CompHash.cc b/src/CompHash.cc index 2f19771637..506c4626af 100644 --- a/src/CompHash.cc +++ b/src/CompHash.cc @@ -184,7 +184,7 @@ char* CompositeHash::SingleValHash(bool type_check, char* kp0, for ( int i = 0; i < num_fields; ++i ) { - auto rv_i = rv->GetField(i).get(); + auto rv_i = rv->GetField(i); Attributes* a = rt->FieldDecl(i)->attrs.get(); bool optional = (a && a->Find(ATTR_OPTIONAL)); @@ -194,7 +194,7 @@ char* CompositeHash::SingleValHash(bool type_check, char* kp0, if ( ! (kp = SingleValHash(type_check, kp, rt->GetFieldType(i).get(), - rv_i, optional)) ) + rv_i.get(), optional)) ) return nullptr; } @@ -517,8 +517,9 @@ int CompositeHash::SingleTypeKeySize(Type* bt, const Val* v, Attributes* a = rt->FieldDecl(i)->attrs.get(); bool optional = (a && a->Find(ATTR_OPTIONAL)); + auto rv_v = rv ? rv->GetField(i) : nullptr; sz = SingleTypeKeySize(rt->GetFieldType(i).get(), - rv ? rv->GetField(i).get() : nullptr, + rv_v.get(), type_check, sz, optional, calc_static_size); if ( ! sz )