From 9468b81a7b8d0cb98d8ed66c35dbb13aaa3ae193 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Fri, 26 Feb 2021 15:51:09 -0800 Subject: [PATCH] dagnabbit, forgot to port over destructor cleanup from ZAM_vector/ZAM_record --- src/Val.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Val.cc b/src/Val.cc index b08855f8ea..fcdc0eca95 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -2868,6 +2868,12 @@ RecordVal::RecordVal(RecordTypePtr t, bool init_fields) : Val(std::move(t)) 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 is_in_record; } @@ -3194,8 +3200,21 @@ VectorVal::VectorVal(VectorTypePtr t) : Val(t) VectorVal::~VectorVal() { + 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; + } + + else if ( IsManagedType(yield_type) ) + { + for ( auto& elem : *vector_val ) + DeleteManagedType(elem); + } + delete vector_val; - delete yield_types; } ValPtr VectorVal::SizeVal() const