Fix bug 80 (valgrind error when finalizing PacketMetadata).
--- a/src/common/packet-metadata.cc Mon Oct 08 14:14:24 2007 +0100
+++ b/src/common/packet-metadata.cc Mon Oct 08 17:44:17 2007 +0100
@@ -43,6 +43,7 @@
{
PacketMetadata::Deallocate (*i);
}
+ PacketMetadata::m_enable = false;
}
void
@@ -643,6 +644,11 @@
void
PacketMetadata::Recycle (struct PacketMetadata::Data *data)
{
+ if (!m_enable)
+ {
+ PacketMetadata::Deallocate (data);
+ return;
+ }
NS_LOG_LOGIC ("recycle size="<<data->m_size<<", list="<<m_freeList.size ());
NS_ASSERT (data->m_count == 0);
if (m_freeList.size () > 1000 ||
--- a/src/common/packet-metadata.h Mon Oct 08 14:14:24 2007 +0100
+++ b/src/common/packet-metadata.h Mon Oct 08 17:44:17 2007 +0100
@@ -190,7 +190,9 @@
public:
~DataFreeList ();
};
-
+
+ friend DataFreeList::~DataFreeList ();
+
PacketMetadata ();
void DoAddHeader (uint32_t uid, uint32_t size);
void DoRemoveHeader (uint32_t uid, uint32_t size);