From 963d50bd482417df90ec28cbe3b5e81c8c5c4900 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sat, 27 Feb 2021 08:34:38 -0800 Subject: [PATCH] fix for now-incorrect assumption that GetField always returns an existing ValPtr --- src/CompHash.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 )