summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/RouterInfo.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2002-07-29 20:31:14 +0000
committerMarc Laukien <marc@zeroc.com>2002-07-29 20:31:14 +0000
commitf867ba38e2d7ee0c8edb4c4680334cf11ee9e2c2 (patch)
treeba65f86e6c15863a3be8e690bef89b7288a3fa13 /cpp/src/Ice/RouterInfo.cpp
parentfix (diff)
downloadice-f867ba38e2d7ee0c8edb4c4680334cf11ee9e2c2.tar.bz2
ice-f867ba38e2d7ee0c8edb4c4680334cf11ee9e2c2.tar.xz
ice-f867ba38e2d7ee0c8edb4c4680334cf11ee9e2c2.zip
leak fix
Diffstat (limited to 'cpp/src/Ice/RouterInfo.cpp')
-rw-r--r--cpp/src/Ice/RouterInfo.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/cpp/src/Ice/RouterInfo.cpp b/cpp/src/Ice/RouterInfo.cpp
index 32d8dbdfd52..e695ad0214d 100644
--- a/cpp/src/Ice/RouterInfo.cpp
+++ b/cpp/src/Ice/RouterInfo.cpp
@@ -12,6 +12,7 @@
#include <Ice/Router.h>
#include <Ice/RoutingTable.h>
#include <Ice/LocalException.h>
+#include <Ice/Functional.h>
using namespace std;
using namespace Ice;
@@ -33,6 +34,8 @@ IceInternal::RouterManager::destroy()
{
IceUtil::Mutex::Lock sync(*this);
+ for_each(_table.begin(), _table.end(), Ice::secondVoidMemFun<RouterPrx, RouterInfo>(&RouterInfo::destroy));
+
_table.clear();
_tableHint = _table.end();
}
@@ -83,6 +86,17 @@ IceInternal::RouterInfo::RouterInfo(const RouterPrx& router) :
assert(_router);
}
+void
+IceInternal::RouterInfo::destroy()
+{
+ IceUtil::Mutex::Lock sync(*this);
+
+ _clientProxy = 0;
+ _serverProxy = 0;
+ _adapter = 0;
+ _routingTable->clear();
+}
+
bool
IceInternal::RouterInfo::operator==(const RouterInfo& rhs) const
{