Browse Source

fixed memory leak

pull/11/merge
orignal 11 years ago
parent
commit
34d2ae4500
  1. 2
      LeaseSet.h
  2. 18
      NetDb.cpp

2
LeaseSet.h

@ -27,6 +27,8 @@ namespace data
public: public:
LeaseSet (const uint8_t * buf, int len); LeaseSet (const uint8_t * buf, int len);
LeaseSet (const LeaseSet& ) = default;
LeaseSet& operator=(const LeaseSet& ) = default;
// implements RoutingDestination // implements RoutingDestination
const Identity& GetIdentity () const { return m_Identity; }; const Identity& GetIdentity () const { return m_Identity; };

18
NetDb.cpp

@ -119,10 +119,9 @@ namespace data
if (r->GetTimestamp () > it->second->GetTimestamp ()) if (r->GetTimestamp () > it->second->GetTimestamp ())
{ {
LogPrint ("RouterInfo updated"); LogPrint ("RouterInfo updated");
*m_RouterInfos[r->GetIdentHash ()] = *r; // we can't replace point because it's used by tunnels *(it->second) = *r; // we can't replace pointer because it's used by tunnels
} }
else delete r;
delete r;
} }
else else
{ {
@ -135,7 +134,18 @@ namespace data
{ {
LeaseSet * l = new LeaseSet (buf, len); LeaseSet * l = new LeaseSet (buf, len);
DeleteRequestedDestination (l->GetIdentHash ()); DeleteRequestedDestination (l->GetIdentHash ());
m_LeaseSets[l->GetIdentHash ()] = l; auto it = m_LeaseSets.find(l->GetIdentHash ());
if (it != m_LeaseSets.end ())
{
LogPrint ("LeaseSet updated");
*(it->second) = *l; // we can't replace pointer because it's used by streams
delete l;
}
else
{
LogPrint ("New LeaseSet added");
m_LeaseSets[l->GetIdentHash ()] = l;
}
} }
RouterInfo * NetDb::FindRouter (const IdentHash& ident) const RouterInfo * NetDb::FindRouter (const IdentHash& ident) const

Loading…
Cancel
Save