Fix bug 80 (valgrind error when finalizing PacketMetadata).
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Mon, 08 Oct 2007 17:44:17 +0100
changeset 1700 2f03a3b8a225
parent 1699 fe78de8fa6df
child 1701 5e9bd24a8716
Fix bug 80 (valgrind error when finalizing PacketMetadata).
src/common/packet-metadata.cc
src/common/packet-metadata.h
--- 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);