From 705729dee01534fc304e84745aaf5efc68ada34d Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Tue, 17 Dec 2019 23:25:22 +0100 Subject: [PATCH] Fix of memory leak in controllerMethod. --- DRAMSys/library/src/controller/Controller.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/DRAMSys/library/src/controller/Controller.cpp b/DRAMSys/library/src/controller/Controller.cpp index 1b086ce6..dc0f9840 100644 --- a/DRAMSys/library/src/controller/Controller.cpp +++ b/DRAMSys/library/src/controller/Controller.cpp @@ -310,13 +310,21 @@ void Controller::controllerMethod() for (auto it : bankMachines) { sc_time delay = it->start(); - if (delay != SC_ZERO_TIME || !readyCmdBlocked) // must be checked to avoid livelock + if (delay != (sc_max_time() - sc_time_stamp()) && (delay != SC_ZERO_TIME || !readyCmdBlocked)) // must be checked to avoid livelock controllerEvent.notify(delay); } for (auto it : refreshManagers) - controllerEvent.notify(it->start()); + { + sc_time delay = it->start(); + if (delay != (sc_max_time() - sc_time_stamp())) + controllerEvent.notify(delay); + } for (auto it : powerDownManagers) - controllerEvent.notify(it->start()); + { + sc_time delay = it->start(); + if (delay != (sc_max_time() - sc_time_stamp())) + controllerEvent.notify(delay); + } } tlm_sync_enum Controller::nb_transport_fw(tlm_generic_payload &trans,