From 878ce49230bbb462d76c0d4e10c70dcb7f751c01 Mon Sep 17 00:00:00 2001 From: Craig Dowell Date: Mon, 12 Oct 2009 23:31:58 -0700 Subject: [PATCH] fix valgrind complaints (bug 711) --- src/devices/mesh/dot11s/hwmp-protocol-mac.cc | 7 ++++++- src/devices/mesh/dot11s/hwmp-protocol.cc | 7 ++++++- src/devices/wifi/interference-helper.cc | 16 +++++++++++++++- src/devices/wifi/interference-helper.h | 2 ++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/devices/mesh/dot11s/hwmp-protocol-mac.cc b/src/devices/mesh/dot11s/hwmp-protocol-mac.cc index 3434c84c9..ca65e5ed8 100644 --- a/src/devices/mesh/dot11s/hwmp-protocol-mac.cc +++ b/src/devices/mesh/dot11s/hwmp-protocol-mac.cc @@ -357,7 +357,12 @@ HwmpProtocolMac::ForwardPerr (std::vector faile //Send Management frame for (std::vector::const_iterator i = receivers.begin (); i != receivers.end (); i++) { - hdr.SetAddr1 (*i); + // + // 64-bit Intel valgrind complains about hdr.SetAddr1 (*i). It likes this + // just fine. + // + Mac48Address address = *i; + hdr.SetAddr1 (address); m_stats.txPerr++; m_stats.txMgt++; m_stats.txMgtBytes += packet->GetSize (); diff --git a/src/devices/mesh/dot11s/hwmp-protocol.cc b/src/devices/mesh/dot11s/hwmp-protocol.cc index 2187a9cc0..4a9012d61 100644 --- a/src/devices/mesh/dot11s/hwmp-protocol.cc +++ b/src/devices/mesh/dot11s/hwmp-protocol.cc @@ -274,7 +274,12 @@ HwmpProtocol::RequestRoute ( for (std::vector::const_iterator i = receivers.begin (); i != receivers.end (); i ++) { Ptr packetCopy = packet->Copy(); - tag.SetAddress (*i); + // + // 64-bit Intel valgrind complains about tag.SetAddress (*i). It + // likes this just fine. + // + Mac48Address address = *i; + tag.SetAddress (address); packetCopy->AddPacketTag (tag); routeReply (true, packetCopy, source, destination, protocolType, plugin->first); } diff --git a/src/devices/wifi/interference-helper.cc b/src/devices/wifi/interference-helper.cc index 1a41e588b..221dad65b 100644 --- a/src/devices/wifi/interference-helper.cc +++ b/src/devices/wifi/interference-helper.cc @@ -428,7 +428,7 @@ InterferenceHelper::AppendEvent (Ptr event) { i++; } - m_events.erase (m_events.begin (), i); + EraseEvents (m_events.begin (), i); } m_events.push_back (event); } @@ -606,7 +606,21 @@ InterferenceHelper::CalculateSnrPer (Ptr event) void InterferenceHelper::EraseEvents (void) { + for (Events::iterator i = m_events.begin (); i != m_events.end (); ++i) + { + *i = 0; + } m_events.erase (m_events.begin (), m_events.end ()); } +void +InterferenceHelper::EraseEvents (Events::iterator start, Events::iterator end) +{ + for (Events::iterator i = start; i != end; ++i) + { + *i = 0; + } + m_events.erase (start, end); +} + } // namespace ns3 diff --git a/src/devices/wifi/interference-helper.h b/src/devices/wifi/interference-helper.h index 0ae37b280..20caa6472 100644 --- a/src/devices/wifi/interference-helper.h +++ b/src/devices/wifi/interference-helper.h @@ -110,6 +110,8 @@ private: typedef std::vector NiChanges; typedef std::list > Events; + void EraseEvents (Events::iterator start, Events::iterator end); + InterferenceHelper (const InterferenceHelper &o); InterferenceHelper &operator = (const InterferenceHelper &o); void AppendEvent (Ptr event);