summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/ConnectionI.cpp4
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp8
2 files changed, 5 insertions, 7 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp
index bb9c687d561..b23e628466d 100644
--- a/cpp/src/Ice/ConnectionI.cpp
+++ b/cpp/src/Ice/ConnectionI.cpp
@@ -1199,6 +1199,10 @@ Ice::ConnectionI::setAdapter(const ObjectAdapterPtr& adapter)
if(_adapter)
{
_servantManager = dynamic_cast<ObjectAdapterI*>(_adapter.get())->getServantManager();
+ if(!_servantManager)
+ {
+ _adapter = 0;
+ }
}
else
{
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index f990ca509bb..d8a7c1d774c 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -702,13 +702,7 @@ Ice::ObjectAdapterI::getThreadPool() const
ServantManagerPtr
Ice::ObjectAdapterI::getServantManager() const
{
- // No mutex lock necessary, _threadPool and _instance are
- // immutable after creation until they are removed in
- // waitForDeactivate().
-
- // Not check for deactivation here!
-
- assert(_instance); // Must not be called after waitForDeactivate().
+ IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
return _servantManager;
}