summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Instance.cpp
diff options
context:
space:
mode:
authorZeroC Staff <git@zeroc.com>2003-06-02 20:11:43 +0000
committerZeroC Staff <git@zeroc.com>2003-06-02 20:11:43 +0000
commit8bbade78f111a89667f944609a7ae806ddddc44b (patch)
treea74f43833a05bd31d73587402f8d300ce913d247 /cpp/src/Ice/Instance.cpp
parentMerged from R1_1_branch (diff)
downloadice-8bbade78f111a89667f944609a7ae806ddddc44b.tar.bz2
ice-8bbade78f111a89667f944609a7ae806ddddc44b.tar.xz
ice-8bbade78f111a89667f944609a7ae806ddddc44b.zip
Checked for null pointer before invoking destroy().
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp56
1 files changed, 40 insertions, 16 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 53553bd4069..d2092b662c5 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -640,11 +640,17 @@ IceInternal::Instance::destroy()
{
assert(!_destroyed);
- _objectAdapterFactory->shutdown();
- _objectAdapterFactory->waitForShutdown();
+ if(_objectAdapterFactory)
+ {
+ _objectAdapterFactory->shutdown();
+ _objectAdapterFactory->waitForShutdown();
+ }
- _outgoingConnectionFactory->destroy();
- _outgoingConnectionFactory->waitUntilFinished();
+ if(_outgoingConnectionFactory)
+ {
+ _outgoingConnectionFactory->destroy();
+ _outgoingConnectionFactory->waitUntilFinished();
+ }
ThreadPoolPtr serverThreadPool;
ThreadPoolPtr clientThreadPool;
@@ -673,27 +679,45 @@ IceInternal::Instance::destroy()
std::swap(_clientThreadPool, clientThreadPool);
}
- _servantFactoryManager->destroy();
- _servantFactoryManager = 0;
+ if(_servantFactoryManager)
+ {
+ _servantFactoryManager->destroy();
+ _servantFactoryManager = 0;
+ }
- _referenceFactory->destroy();
- _referenceFactory = 0;
+ if(_referenceFactory)
+ {
+ _referenceFactory->destroy();
+ _referenceFactory = 0;
+ }
// No destroy function defined.
// _proxyFactory->destroy();
_proxyFactory = 0;
- _routerManager->destroy();
- _routerManager = 0;
+ if(_routerManager)
+ {
+ _routerManager->destroy();
+ _routerManager = 0;
+ }
- _locatorManager->destroy();
- _locatorManager = 0;
+ if(_locatorManager)
+ {
+ _locatorManager->destroy();
+ _locatorManager = 0;
+ }
- _endpointFactoryManager->destroy();
- _endpointFactoryManager = 0;
+ if(_endpointFactoryManager)
+ {
+ _endpointFactoryManager->destroy();
+ _endpointFactoryManager = 0;
+ }
- _pluginManager->destroy();
- _pluginManager = 0;
+ if(_pluginManager)
+ {
+ _pluginManager->destroy();
+ _pluginManager = 0;
+ }
// No destroy function defined.
// _dynamicLibraryList->destroy();