From b6e7112b7426e1cd72079123e14d068d407aa699 Mon Sep 17 00:00:00 2001
From: Carl Philipp Klemm <philipp@uvos.xyz>
Date: Mon, 30 May 2022 09:57:16 +0200
Subject: [PATCH] finitetr: fix setParam to accutally change parameters

---
 finitetr.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/finitetr.cpp b/finitetr.cpp
index a69487a..2572744 100644
--- a/finitetr.cpp
+++ b/finitetr.cpp
@@ -26,6 +26,7 @@ FiniteTransmitionline::FiniteTransmitionline(fvalue c, fvalue r, unsigned int n)
 
 FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 {
+
 	std::vector<std::string> tokens = tokenize(paramStr, ',');
 	if(tokens.size() < paramCount())
 	{
@@ -33,6 +34,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 		_C = 1e-6;
 		_R = 1000;
 		_n = 4;
+		if(subComponant)
+				delete subComponant;
 		subComponant = createTransmitionLine(_C, _R, _n);
 		return;
 	}
@@ -43,6 +46,8 @@ FiniteTransmitionline::FiniteTransmitionline(std::string paramStr)
 			_R = std::stod(tokens[0]);
 			_C = std::stod(tokens[1]);
 			_n = std::stod(tokens[2]);
+			if(subComponant)
+				delete subComponant;
 			subComponant = createTransmitionLine(_C, _R, _n);
 		}
 		catch(const std::invalid_argument& ia)
@@ -58,6 +63,8 @@ FiniteTransmitionline::FiniteTransmitionline(const FiniteTransmitionline& in)
 	_R = in._R;
 	_C = in._C;
 	_n = in._n;
+	if(subComponant)
+		delete subComponant;
 	subComponant = createTransmitionLine(_C, _R, _n);
 }
 
@@ -98,6 +105,10 @@ void FiniteTransmitionline::setParam(const std::vector<fvalue>& param)
 	}
 
 	_n = param[2];
+
+	if(subComponant)
+		delete subComponant;
+	subComponant = createTransmitionLine(_C, _R, _n);
 }
 
 char FiniteTransmitionline::getComponantChar() const
-- 
GitLab