From dedcbd8c1e65f86e986831807d6b4ef8cfbfcf00 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Sun, 22 Aug 2021 18:38:15 +0300 Subject: [PATCH] Implement BlockAckManager::DoDispose () Nullify all Ptr's there to remove possible circular references. Do not set m_queue Ptr in the destructor, it is destroyed anyway. --- src/wifi/model/block-ack-manager.cc | 12 ++++++++++-- src/wifi/model/block-ack-manager.h | 3 +++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/wifi/model/block-ack-manager.cc b/src/wifi/model/block-ack-manager.cc index 233c25ccb..b42a71a95 100644 --- a/src/wifi/model/block-ack-manager.cc +++ b/src/wifi/model/block-ack-manager.cc @@ -72,9 +72,17 @@ BlockAckManager::BlockAckManager () BlockAckManager::~BlockAckManager () { NS_LOG_FUNCTION (this); - m_queue = 0; +} + +void +BlockAckManager::DoDispose () +{ + NS_LOG_FUNCTION (this); m_agreements.clear (); - m_retryPackets = 0; + m_retryPackets = nullptr; + m_bars.clear (); + m_queue = nullptr; + m_stationManager = nullptr; } bool diff --git a/src/wifi/model/block-ack-manager.h b/src/wifi/model/block-ack-manager.h index cafc5ddc5..78ee71d62 100644 --- a/src/wifi/model/block-ack-manager.h +++ b/src/wifi/model/block-ack-manager.h @@ -431,6 +431,9 @@ public: */ void ScheduleBar (Ptr bar, bool skipIfNoDataQueued = false); +protected: + void DoDispose () override; + private: /** * Inactivity timeout function