summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Direct.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2003-02-06 16:42:21 +0000
committerMarc Laukien <marc@zeroc.com>2003-02-06 16:42:21 +0000
commit3eb50209f95f232c7670d246ac2c72a563c58908 (patch)
tree692e609d8446fd132a3af8cf996b180db3d617fb /cpp/src/Ice/Direct.cpp
parentfix (diff)
downloadice-3eb50209f95f232c7670d246ac2c72a563c58908.tar.bz2
ice-3eb50209f95f232c7670d246ac2c72a563c58908.tar.xz
ice-3eb50209f95f232c7670d246ac2c72a563c58908.zip
fix
Diffstat (limited to 'cpp/src/Ice/Direct.cpp')
-rw-r--r--cpp/src/Ice/Direct.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/Ice/Direct.cpp b/cpp/src/Ice/Direct.cpp
index a1e6958d9a0..eb668c94e7d 100644
--- a/cpp/src/Ice/Direct.cpp
+++ b/cpp/src/Ice/Direct.cpp
@@ -30,10 +30,18 @@ IceInternal::Direct::Direct(const Current& current) :
ObjectAdapterI* adapter = dynamic_cast<ObjectAdapterI*>(_current.adapter.get());
assert(adapter);
+ //
+ // Must call incDirectCount() first, because it checks for adapter
+ // deactivation, and prevents deactivation completion until
+ // decDirectCount() is called. This is important, because
+ // getServantManager() may not be called afer deactivation
+ // completion.
+ //
+ adapter->incDirectCount();
+
ServantManagerPtr servantManager = adapter->getServantManager();
assert(servantManager);
- adapter->incDirectCount();
try
{
_servant = servantManager->findServant(_current.id);