diff --git a/src/experiments/l4-sys/experiment.cc b/src/experiments/l4-sys/experiment.cc index 00e018d0..a58a7b75 100644 --- a/src/experiments/l4-sys/experiment.cc +++ b/src/experiments/l4-sys/experiment.cc @@ -178,10 +178,15 @@ L4SysExperiment::L4SysExperiment() } L4SysExperiment::~L4SysExperiment() { + destroy(); +} + +void L4SysExperiment::destroy() { delete param; } void L4SysExperiment::terminate(int reason) { + destroy(); simulator.terminate(reason); } diff --git a/src/experiments/l4-sys/experiment.hpp b/src/experiments/l4-sys/experiment.hpp index d4e690a0..44219d9a 100644 --- a/src/experiments/l4-sys/experiment.hpp +++ b/src/experiments/l4-sys/experiment.hpp @@ -39,6 +39,11 @@ protected: * @param reason the exit reason, i.e. exit code, passed on to simulator::terminate */ void terminate(int reason); + /** + * Frees all resources allocated by this object. + * This function is called by terminate as well as the destructor. + */ + inline void destroy(); private: /** * Sanitises the output string of the serial device monitored.