destructor cleanup from ZAM_vector/ZAM_record

This commit is contained in:
Vern Paxson 2021-02-26 15:51:09 -08:00
parent 5084584020
commit 498d8c4bde

View file

@ -2868,6 +2868,12 @@ RecordVal::RecordVal(RecordTypePtr t, bool init_fields) : Val(std::move(t))
RecordVal::~RecordVal() RecordVal::~RecordVal()
{ {
auto n = record_val->size();
for ( unsigned int i = 0; i < n; ++i )
if ( HasField(i) )
DeleteIfManaged((*record_val)[i], rt->GetFieldType(i));
delete record_val; delete record_val;
delete is_in_record; delete is_in_record;
} }
@ -3194,10 +3200,23 @@ VectorVal::VectorVal(VectorTypePtr t) : Val(t)
VectorVal::~VectorVal() VectorVal::~VectorVal()
{ {
delete vector_val; if ( yield_types )
{
auto n = yield_types->size();
for ( auto i = 0; i < n; ++i )
DeleteIfManaged((*vector_val)[i], (*yield_types)[i]);
delete yield_types; delete yield_types;
} }
else if ( IsManagedType(yield_type) )
{
for ( auto& elem : *vector_val )
DeleteManagedType(elem);
}
delete vector_val;
}
ValPtr VectorVal::SizeVal() const ValPtr VectorVal::SizeVal() const
{ {
return val_mgr->Count(uint32_t(vector_val->size())); return val_mgr->Count(uint32_t(vector_val->size()));