From 12cf66da2bdde881077cde75cd68bd827cd7546f Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Mon, 12 Feb 2007 19:32:42 +0100 Subject: [PATCH] fix memory leaks for simple sample code --- src/node/arp.cc | 8 ++++++++ src/node/internet-node.cc | 10 ++++++++++ src/node/internet-node.h | 5 +++-- src/node/ipv4-l4-demux.cc | 7 ++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/node/arp.cc b/src/node/arp.cc index ca3b39439..7d6cd0831 100644 --- a/src/node/arp.cc +++ b/src/node/arp.cc @@ -35,6 +35,14 @@ Arp::Arp (Node *node) : m_node (node) {} +Arp::~Arp () +{ + for (CacheList::const_iterator i = m_cacheList.begin (); i != m_cacheList.end (); i++) + { + delete *i; + } +} + Arp * Arp::Copy (Node *node) { diff --git a/src/node/internet-node.cc b/src/node/internet-node.cc index 540118ba0..8d815e174 100644 --- a/src/node/internet-node.cc +++ b/src/node/internet-node.cc @@ -61,6 +61,16 @@ InternetNode::InternetNode (InternetNode const &o) SetupLoopback (); } +InternetNode::~InternetNode () +{ + delete m_netDevices; + delete m_l3Demux; + delete m_ipv4L4Demux; + delete m_udp; + delete m_ipv4; + delete m_arp; +} + void InternetNode::SetupLoopback (void) { diff --git a/src/node/internet-node.h b/src/node/internet-node.h index 12d74666a..a8fe8f696 100644 --- a/src/node/internet-node.h +++ b/src/node/internet-node.h @@ -35,8 +35,9 @@ class InternetNode : public Node { public: InternetNode(); - InternetNode(const InternetNode&); // Copy constructor - virtual InternetNode* Copy() const;// Make a copy of this node + InternetNode(const InternetNode&); + virtual ~InternetNode (); + virtual InternetNode* Copy() const; // Capability access virtual NetDeviceList* GetNetDevices() const; virtual L3Demux* GetL3Demux() const; diff --git a/src/node/ipv4-l4-demux.cc b/src/node/ipv4-l4-demux.cc index 45be841e9..6260f457a 100644 --- a/src/node/ipv4-l4-demux.cc +++ b/src/node/ipv4-l4-demux.cc @@ -32,7 +32,12 @@ Ipv4L4Demux::Ipv4L4Demux (Node *node) {} Ipv4L4Demux::~Ipv4L4Demux() -{} +{ + for (L4List_t::const_iterator i = m_protocols.begin(); i != m_protocols.end(); ++i) + { + delete *i; + } +} Ipv4L4Demux* Ipv4L4Demux::Copy(Node *node) const {