From 2b8fd17ca7766181b5bb2baaf0b33780259e6f7d Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 25 Mar 2023 18:08:08 -0700 Subject: [PATCH] leaks Signed-off-by: James Cherry --- liberty/Liberty.cc | 2 ++ liberty/LibertyReader.cc | 11 ++++++++++- liberty/LibertyReaderPvt.hh | 5 +++-- power/Power.cc | 1 + 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/liberty/Liberty.cc b/liberty/Liberty.cc index 69e3780d..31e1d011 100644 --- a/liberty/Liberty.cc +++ b/liberty/Liberty.cc @@ -125,6 +125,8 @@ LibertyLibrary::~LibertyLibrary() stringDelete(supply_name); } delete buffers_; + driver_waveform_map_.deleteContents(); + delete driver_waveform_default_; } LibertyCell * diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index e47fc6e0..7c89e962 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -2526,7 +2526,7 @@ LibertyReader::endOutputCurrentRiseFall(LibertyGroup *group) cap_axis->findAxisIndex(waveform->cap(), cap_index, cap_exists); if (slew_exists && cap_exists) { size_t index = slew_index * cap_axis->size() + cap_index; - current_waveforms[index] = waveform->currents(); + current_waveforms[index] = waveform->stealCurrents(); (*ref_times)[slew_index] = waveform->referenceTime(); } else @@ -2539,6 +2539,7 @@ LibertyReader::endOutputCurrentRiseFall(LibertyGroup *group) current_waveforms, ref_time_tbl); timing_->setOutputWaveforms(rf_, output_current); + output_currents_.deleteContentsClear(); } void @@ -5777,4 +5778,12 @@ OutputWaveform::~OutputWaveform() delete currents_; } +Table1 * +OutputWaveform::stealCurrents() +{ + Table1 *currents = currents_; + currents_ = nullptr; + return currents; +} + } // namespace diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index 15f3af0a..0f70b02e 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -880,8 +880,9 @@ public: float slew() const { return slew_; } float cap() const { return cap_; } Table1 *currents() const { return currents_; } - float referenceTime() const { return reference_time_; } - + Table1 *stealCurrents(); + float referenceTime() { return reference_time_; } + private: float slew_; float cap_; diff --git a/power/Power.cc b/power/Power.cc index 773219ee..1a313eac 100644 --- a/power/Power.cc +++ b/power/Power.cc @@ -321,6 +321,7 @@ PropActivityVisitor::PropActivityVisitor(Power *power, BfsFwdIterator *bfs) : StaState(power), visited_regs_(network_), + max_change_(0.0), power_(power), bfs_(bfs) {