From 10e26bd8e02957f87b239d7ad166a8a49b0eedd7 Mon Sep 17 00:00:00 2001
From: Matthew McGill <mhollismcgill@gmail.com>
Date: Fri, 5 Oct 2018 16:48:13 +0000
Subject: [PATCH] VariantID_t's destructor frees File_t objects

Former-commit-id: e9d0f8d6aa435a2edf62ef432b81c725a31c8cf4
---
 libIRDB/include/core/variantid.hpp |  3 ++-
 libIRDB/src/core/variantid.cpp     | 13 +++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/libIRDB/include/core/variantid.hpp b/libIRDB/include/core/variantid.hpp
index 9e7285fab..f9536cf41 100644
--- a/libIRDB/include/core/variantid.hpp
+++ b/libIRDB/include/core/variantid.hpp
@@ -29,7 +29,8 @@ class VariantID_t : public BaseObj_t
 {
     public:
         VariantID_t();        		// create a Variant ID not in the database 
-        VariantID_t(db_id_t pid);       // read from the DB 
+        VariantID_t(db_id_t pid);       // read from the DB
+	~VariantID_t();     // Deletes the File_t objects -- beware dangling File_t* in FileIR_t objects!  
 
         bool IsRegistered();               
         bool Register();    // accesses DB
diff --git a/libIRDB/src/core/variantid.cpp b/libIRDB/src/core/variantid.cpp
index 4daf529f1..1de34b5f1 100644
--- a/libIRDB/src/core/variantid.cpp
+++ b/libIRDB/src/core/variantid.cpp
@@ -38,6 +38,19 @@ VariantID_t::VariantID_t() :
 }
 
 
+VariantID_t::~VariantID_t()
+{
+	for(std::set<File_t*>::iterator 
+		it = files.begin();
+		it != files.end();
+		++it
+	   )	
+	{
+		delete *it;
+	}
+}
+
+
 void VariantID_t::CreateTables()
 {
 	// note:  this tables are now part of File_t.
-- 
GitLab