From 71a71293b90c305227a13515ef5296512f08fec3 Mon Sep 17 00:00:00 2001
From: Alessio Igor Bogani <alessio.bogani@elettra.eu>
Date: Thu, 18 Apr 2024 12:16:27 +0200
Subject: [PATCH] Fix memory leaks

---
 src/Agilent4uhv.cpp | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/Agilent4uhv.cpp b/src/Agilent4uhv.cpp
index f2e9c77..9cc7a42 100644
--- a/src/Agilent4uhv.cpp
+++ b/src/Agilent4uhv.cpp
@@ -188,9 +188,21 @@ void Agilent4uhv::delete_device()
 
 	//	Delete device allocated objects
 	if (attr_Model_read[0])
-		delete attr_Model_read[0];
+		delete[] attr_Model_read[0];
 	if (attr_SerialNumber_read[0])
-		delete attr_SerialNumber_read[0];
+		delete[] attr_SerialNumber_read[0];
+
+	for (size_t i=0; i<channels.size(); ++i) {
+		string attr_status_name = "Status" + channels[i];
+		Tango::DevString *att_value = get_StatusX_data_ptr(attr_status_name);
+		if (*att_value)
+			delete[] *att_value;
+	}
+
+	for (size_t i=0; i<channels.size(); ++i) {
+		remove_OnHVX_dynamic_command("OnHV" + channels[i]);
+		remove_OffHVX_dynamic_command("OffHV" + channels[i]);
+	}
 
 	/*----- PROTECTED REGION END -----*/	//	Agilent4uhv::delete_device
 	delete[] attr_Model_read;
-- 
GitLab