diff options
author | ZeroC Staff <git@zeroc.com> | 2003-06-02 20:11:43 +0000 |
---|---|---|
committer | ZeroC Staff <git@zeroc.com> | 2003-06-02 20:11:43 +0000 |
commit | 8bbade78f111a89667f944609a7ae806ddddc44b (patch) | |
tree | a74f43833a05bd31d73587402f8d300ce913d247 /cpp/src/Ice/Instance.cpp | |
parent | Merged from R1_1_branch (diff) | |
download | ice-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.cpp | 56 |
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(); |