From c0ed9be2872dcb1cc171d5072c36d7f4146c7ac2 Mon Sep 17 00:00:00 2001 From: "Gustavo J. A. M. Carneiro" Date: Mon, 8 Oct 2007 17:44:17 +0100 Subject: [PATCH] Fix bug 80 (valgrind error when finalizing PacketMetadata). --- src/common/packet-metadata.cc | 6 ++++++ src/common/packet-metadata.h | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/common/packet-metadata.cc b/src/common/packet-metadata.cc index fe4ad4fe0..ebb5850ba 100644 --- a/src/common/packet-metadata.cc +++ b/src/common/packet-metadata.cc @@ -43,6 +43,7 @@ PacketMetadata::DataFreeList::~DataFreeList () { PacketMetadata::Deallocate (*i); } + PacketMetadata::m_enable = false; } void @@ -643,6 +644,11 @@ PacketMetadata::Create (uint32_t size) void PacketMetadata::Recycle (struct PacketMetadata::Data *data) { + if (!m_enable) + { + PacketMetadata::Deallocate (data); + return; + } NS_LOG_LOGIC ("recycle size="<m_size<<", list="<m_count == 0); if (m_freeList.size () > 1000 || diff --git a/src/common/packet-metadata.h b/src/common/packet-metadata.h index e4e058907..8b979ff35 100644 --- a/src/common/packet-metadata.h +++ b/src/common/packet-metadata.h @@ -190,7 +190,9 @@ private: public: ~DataFreeList (); }; - + + friend DataFreeList::~DataFreeList (); + PacketMetadata (); void DoAddHeader (uint32_t uid, uint32_t size); void DoRemoveHeader (uint32_t uid, uint32_t size);