PacketBB: Tidy up some memory leaks.
authorTom Wambold <tom5760@gmail.com>
Thu, 24 Sep 2009 18:05:36 -0400
changeset 5263 a0283279fddd
parent 5262 cdc001a91b76
child 5264 6dc651e00339
PacketBB: Tidy up some memory leaks.
src/node/packetbb-test-suite.cc
src/node/packetbb.cc
src/node/packetbb.h
--- a/src/node/packetbb-test-suite.cc	Thu Sep 24 10:57:41 2009 -0400
+++ b/src/node/packetbb-test-suite.cc	Thu Sep 24 18:05:36 2009 -0400
@@ -25,7 +25,7 @@
 #include "ns3/ptr.h"
 #include "ns3/ipv4-address.h"
 #include "ns3/ipv6-address.h"
-#include "packetbb.h"
+#include "ns3/packetbb.h"
 
 using namespace ns3;
 
@@ -34,7 +34,7 @@
 public:
   PbbTestCase (std::string name, Ptr<PbbPacket> packet,
       uint8_t * buffer, uint32_t size);
-  virtual ~PbbTestCase ();
+  virtual ~PbbTestCase (void);
 
 protected:
   virtual bool DoRun (void);
@@ -59,6 +59,7 @@
 
 PbbTestCase::~PbbTestCase (void)
 {
+  return;
 }
 
 bool
--- a/src/node/packetbb.cc	Thu Sep 24 10:57:41 2009 -0400
+++ b/src/node/packetbb.cc	Thu Sep 24 18:05:36 2009 -0400
@@ -58,6 +58,16 @@
 
 NS_OBJECT_ENSURE_REGISTERED (PbbPacket);
 
+PbbTlvBlock::PbbTlvBlock (void)
+{
+  return;
+}
+
+PbbTlvBlock::~PbbTlvBlock (void)
+{
+  Clear ();
+}
+
 PbbTlvBlock::Iterator
 PbbTlvBlock::Begin (void)
 {
@@ -151,6 +161,10 @@
 void
 PbbTlvBlock::Clear (void)
 {
+  for (Iterator iter = Begin (); iter != End (); iter++)
+    {
+      *iter = 0;
+    }
   m_tlvList.clear ();
 }
 
@@ -262,6 +276,16 @@
 
 /* End PbbTlvBlock class */
 
+PbbAddressTlvBlock::PbbAddressTlvBlock (void)
+{
+  return;
+}
+
+PbbAddressTlvBlock::~PbbAddressTlvBlock (void)
+{
+  Clear ();
+}
+
 PbbAddressTlvBlock::Iterator
 PbbAddressTlvBlock::Begin (void)
 {
@@ -355,6 +379,10 @@
 void
 PbbAddressTlvBlock::Clear (void)
 {
+  for (Iterator iter = Begin (); iter != End (); iter++)
+    {
+      *iter = 0;
+    }
   m_tlvList.clear ();
 }
 
@@ -474,6 +502,11 @@
   m_hasseqnum = false;
 }
 
+PbbPacket::~PbbPacket (void)
+{
+  MessageClear ();
+}
+
 uint8_t
 PbbPacket::GetVersion (void) const
 {
@@ -706,6 +739,10 @@
 void
 PbbPacket::MessageClear (void)
 {
+  for (MessageIterator iter = MessageBegin (); iter != MessageEnd (); iter++)
+    {
+      *iter = 0;
+    }
   m_messageList.clear ();
 }
 
@@ -921,6 +958,7 @@
 
 PbbMessage::~PbbMessage ()
 {
+  AddressBlockClear ();
 }
 
 void
@@ -1122,7 +1160,7 @@
 void
 PbbMessage::TlvClear (void)
 {
-  return m_tlvList.Clear();
+  m_tlvList.Clear();
 }
 
 /* Manipulating Address Block and Address TLV pairs */
@@ -1227,6 +1265,12 @@
 void
 PbbMessage::AddressBlockClear (void)
 {
+  for (AddressBlockIterator iter = AddressBlockBegin ();
+      iter != AddressBlockEnd ();
+      iter++)
+    {
+      *iter = 0;
+    }
   return m_addressBlockList.clear();
 }
 
@@ -1956,7 +2000,7 @@
 void
 PbbAddressBlock::TlvClear (void)
 {
-  return m_addressTlvList.Clear();
+  m_addressTlvList.Clear();
 }
 
 void
@@ -2412,6 +2456,11 @@
   m_hasValue = false;
 }
 
+PbbTlv::~PbbTlv (void)
+{
+  m_value.RemoveAtEnd (m_value.GetSize ());
+}
+
 void
 PbbTlv::SetType (uint8_t type)
 {
@@ -2506,10 +2555,9 @@
 void
 PbbTlv::SetValue (const uint8_t * buffer, uint32_t size)
 {
-  Buffer value;
-  value.AddAtStart (size);
-  value.Begin ().Write (buffer, size);
-  SetValue (value);
+  m_hasValue = true;
+  m_value.AddAtStart (size);
+  m_value.Begin ().Write (buffer, size);
 }
 
 Buffer
--- a/src/node/packetbb.h	Thu Sep 24 10:57:41 2009 -0400
+++ b/src/node/packetbb.h	Thu Sep 24 18:05:36 2009 -0400
@@ -57,6 +57,9 @@
   typedef std::list< Ptr<PbbTlv> >::iterator Iterator;
   typedef std::list< Ptr<PbbTlv> >::const_iterator ConstIterator;
 
+  PbbTlvBlock (void);
+  ~PbbTlvBlock (void);
+
   /**
    * \return an iterator to the first TLV in this block.
    */
@@ -206,6 +209,9 @@
   typedef std::list< Ptr<PbbAddressTlv> >::iterator Iterator;
   typedef std::list< Ptr<PbbAddressTlv> >::const_iterator ConstIterator;
 
+  PbbAddressTlvBlock (void);
+  ~PbbAddressTlvBlock (void);
+
   /**
    * \return an iterator to the first Address TLV in this block.
    */
@@ -363,6 +369,7 @@
   typedef std::list< Ptr<PbbMessage> >::const_iterator ConstMessageIterator;
 
   PbbPacket (void);
+  ~PbbPacket (void);
 
   /**
    * \return the version of PacketBB that constructed this packet.
@@ -1517,6 +1524,7 @@
 {
 public:
   PbbTlv (void);
+  ~PbbTlv (void);
 
   /**
    * \brief Sets the type of this TLV.