summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ServantManager.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-04-09 17:00:52 +0000
committerMarc Laukien <marc@zeroc.com>2004-04-09 17:00:52 +0000
commitd0882b6da4887c83e51867dfa8c2f5e9543f0a5d (patch)
treec00edd9461071159c5c829de3ae9ce993125f212 /cpp/src/Ice/ServantManager.cpp
parentmoved StringUtil to IceUtil, fixed names (diff)
downloadice-d0882b6da4887c83e51867dfa8c2f5e9543f0a5d.tar.bz2
ice-d0882b6da4887c83e51867dfa8c2f5e9543f0a5d.tar.xz
ice-d0882b6da4887c83e51867dfa8c2f5e9543f0a5d.zip
fix
Diffstat (limited to 'cpp/src/Ice/ServantManager.cpp')
-rw-r--r--cpp/src/Ice/ServantManager.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/cpp/src/Ice/ServantManager.cpp b/cpp/src/Ice/ServantManager.cpp
index 2a220100c05..fe6d59de0d9 100644
--- a/cpp/src/Ice/ServantManager.cpp
+++ b/cpp/src/Ice/ServantManager.cpp
@@ -167,11 +167,12 @@ IceInternal::ServantManager::addServantLocator(const ServantLocatorPtr& locator,
assert(_instance); // Must not be called after destruction.
- if(_locatorMap.find(category) != _locatorMap.end())
+ if((_locatorMapHint != _locatorMap.end() && _locatorMapHint->first == category)
+ || _locatorMap.find(category) != _locatorMap.end())
{
AlreadyRegisteredException ex(__FILE__, __LINE__);
ex.kindOfObject = "servant locator";
- ex.id = category;
+ ex.id = IceUtil::escapeString(category, "");
throw ex;
}
@@ -185,17 +186,21 @@ IceInternal::ServantManager::findServantLocator(const string& category) const
assert(_instance); // Must not be called after destruction.
- if(_locatorMap.end() != _locatorMapHint)
+ map<string, ServantLocatorPtr>::iterator p = const_cast<map<string, ServantLocatorPtr>&>(_locatorMap).end();
+ if(_locatorMapHint != _locatorMap.end())
{
if(_locatorMapHint->first == category)
{
- return _locatorMapHint->second;
+ p = _locatorMapHint;
}
}
- map<string, ServantLocatorPtr>::iterator p =
- const_cast<map<string, ServantLocatorPtr>&>(_locatorMap).find(category);
- if(_locatorMap.end() != p)
+ if(p == _locatorMap.end())
+ {
+ p = const_cast<map<string, ServantLocatorPtr>&>(_locatorMap).find(category);
+ }
+
+ if(p != _locatorMap.end())
{
_locatorMapHint = p;
return p->second;
@@ -204,7 +209,6 @@ IceInternal::ServantManager::findServantLocator(const string& category) const
{
return 0;
}
-
}
IceInternal::ServantManager::ServantManager(const InstancePtr& instance, const string& adapterName)