diff options
author | Benoit Foucher <benoit@zeroc.com> | 2003-01-15 17:32:50 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2003-01-15 17:32:50 +0000 |
commit | 0092d92aab2a3036c23f133b1683e6dc28c43dc6 (patch) | |
tree | 1fa706290c5c1b66ab6e3ef82828475a3cc7d008 | |
parent | Simplified stopAll (diff) | |
download | ice-0092d92aab2a3036c23f133b1683e6dc28c43dc6.tar.bz2 ice-0092d92aab2a3036c23f133b1683e6dc28c43dc6.tar.xz ice-0092d92aab2a3036c23f133b1683e6dc28c43dc6.zip |
Make sure the locator proxy doesn't reference itself.
-rw-r--r-- | cpp/src/Ice/LocatorInfo.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/Ice/LocatorInfo.cpp b/cpp/src/Ice/LocatorInfo.cpp index 7c28a737f29..4842d17ca3f 100644 --- a/cpp/src/Ice/LocatorInfo.cpp +++ b/cpp/src/Ice/LocatorInfo.cpp @@ -57,13 +57,15 @@ IceInternal::LocatorManager::destroy() } LocatorInfoPtr -IceInternal::LocatorManager::get(const LocatorPrx& locator) +IceInternal::LocatorManager::get(const LocatorPrx& loc) { - if(!locator) + if(!loc) { return 0; } + LocatorPrx locator = LocatorPrx::uncheckedCast(loc->ice_locator(0)); // The locator can't be located. + // // TODO: reap unused locator info objects? // @@ -263,6 +265,11 @@ IceInternal::LocatorInfo::getLocatorRegistry() if(!_locatorRegistry) // Lazy initialization. { _locatorRegistry = _locator->getRegistry(); + + // + // The locator registry can't be located. + // + _locatorRegistry = LocatorRegistryPrx::uncheckedCast(_locatorRegistry->ice_locator(0)); } return _locatorRegistry; |