diff options
author | Marc Laukien <marc@zeroc.com> | 2002-07-29 20:31:14 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2002-07-29 20:31:14 +0000 |
commit | f867ba38e2d7ee0c8edb4c4680334cf11ee9e2c2 (patch) | |
tree | ba65f86e6c15863a3be8e690bef89b7288a3fa13 /cpp/src/Ice/RouterInfo.cpp | |
parent | fix (diff) | |
download | ice-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.cpp | 14 |
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 { |