PacketBB: Tidy up some memory leaks.
--- 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.