diff options
Diffstat (limited to 'stoc')
-rw-r--r-- | stoc/source/servicemanager/servicemanager.cxx | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/stoc/source/servicemanager/servicemanager.cxx b/stoc/source/servicemanager/servicemanager.cxx index 8b528afc953f..78dffbcb9c32 100644 --- a/stoc/source/servicemanager/servicemanager.cxx +++ b/stoc/source/servicemanager/servicemanager.cxx @@ -1646,11 +1646,12 @@ void OServiceManager::remove( const Any & Element ) OUString( RTL_CONSTASCII_USTRINGPARAM("element is not in!") ), static_cast< OWeakObject * >(this) ); } - - // remove from the implementation map + //First remove all factories which have been loaded by ORegistryServiceManager. + m_SetLoadedFactories.erase( *aIt); + //Remove from the implementation map. It contains all factories of m_SetLoadedFactories + //which have been added directly through XSet, that is not via ORegistryServiceManager m_ImplementationMap.erase( aIt ); - m_SetLoadedFactories.erase( *aIt); // remove from the implementation name hashmap Reference<XServiceInfo > xInfo( Reference<XServiceInfo >::query( xEle ) ); if( xInfo.is() ) |