diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/Direct.cpp | 4 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/Ice/Direct.cpp b/cpp/src/Ice/Direct.cpp index 37230f9d466..27ba75fd9db 100644 --- a/cpp/src/Ice/Direct.cpp +++ b/cpp/src/Ice/Direct.cpp @@ -22,10 +22,10 @@ using namespace IceInternal; IceInternal::Direct::Direct(const Current& current) : _current(current) { + dynamic_cast<ObjectAdapterI*>(_current.adapter.get())->incUsageCount(); + try { - dynamic_cast<ObjectAdapterI*>(_current.adapter.get())->incUsageCount(); - _servant = _current.adapter->identityToServant(_current.id); if(!_servant && !_current.id.category.empty()) diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 31329f20b5b..c5b41c01226 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -457,7 +457,11 @@ Ice::ObjectAdapterI::incUsageCount() { IceUtil::Monitor<IceUtil::Mutex>::Lock sync(*this); - assert(_instance); // Must not be called after deactivation. + if(!_instance) + { + throw ObjectAdapterDeactivatedException(__FILE__, __LINE__); + } + assert(_usageCount >= 0); ++_usageCount; } |