From de0739239bb5fc21b3f4e85c6222971062ed591b Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Fri, 30 May 2025 14:06:26 -0700 Subject: [PATCH] [message] add destructors for `MessageQueue` and `PriorityQueue` (#11550) This commit adds destructors for `MessageQueue` and `PriorityQueue`. This ensures that allocated `Message` instances in different queues are freed when the `ot::Instance` is destroyed. --- src/core/common/message.hpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/core/common/message.hpp b/src/core/common/message.hpp index 54e6a0551..bc372f9f0 100644 --- a/src/core/common/message.hpp +++ b/src/core/common/message.hpp @@ -1569,7 +1569,7 @@ private: /** * Implements a message queue. */ -class MessageQueue : public otMessageQueue +class MessageQueue : public otMessageQueue, private NonCopyable { friend class Message; friend class PriorityQueue; @@ -1592,6 +1592,13 @@ public: */ MessageQueue(void) { SetTail(nullptr); } +#if OPENTHREAD_PLATFORM_NEXUS + /** + * Destructor of `MessageQueue`. + */ + ~MessageQueue(void) { DequeueAndFreeAll(); } +#endif + /** * Returns a pointer to the first message. * @@ -1678,7 +1685,7 @@ private: /** * Implements a priority queue. */ -class PriorityQueue : private Clearable +class PriorityQueue : private Clearable, private NonCopyable { friend class Message; friend class MessageQueue; @@ -1693,6 +1700,13 @@ public: */ PriorityQueue(void) { Clear(); } +#if OPENTHREAD_PLATFORM_NEXUS + /** + * Destructor of `PriorityQueue`. + */ + ~PriorityQueue(void) { DequeueAndFreeAll(); } +#endif + /** * Returns a pointer to the first message. *