diff options
author | Marc Laukien <marc@zeroc.com> | 2003-02-06 16:42:21 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2003-02-06 16:42:21 +0000 |
commit | 3eb50209f95f232c7670d246ac2c72a563c58908 (patch) | |
tree | 692e609d8446fd132a3af8cf996b180db3d617fb /cpp/src/Ice/Direct.cpp | |
parent | fix (diff) | |
download | ice-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.cpp | 10 |
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); |