summaryrefslogtreecommitdiff
path: root/include/module/ModuleLoader.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/module/ModuleLoader.hpp')
-rwxr-xr-xinclude/module/ModuleLoader.hpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/include/module/ModuleLoader.hpp b/include/module/ModuleLoader.hpp
index b1fbbb6..b0cddd6 100755
--- a/include/module/ModuleLoader.hpp
+++ b/include/module/ModuleLoader.hpp
@@ -56,13 +56,16 @@ const int CLOSE_DEFERRED = 1;
const int DEFAULT_FLAGS = CLOSE_ON_DTOR;
static void deferredClose( void )
-{
- for( size_t i = 0; i <= nofDeferredModules - 1; i++ ) {
+{
+ for( size_t i = 0; i < nofDeferredModules; i++ ) {
+ if( deferredModules[i] ) {
#ifndef _WIN32
- dlclose( deferredModules[i] );
+ dlclose( deferredModules[i] );
#else
- (void)FreeLibrary( deferredModules[i] );
+ (void)FreeLibrary( deferredModules[i] );
#endif
+ deferredModules[i] = 0;
+ }
}
free( deferredModules );
}
@@ -134,6 +137,8 @@ class BaseModuleLoader {
// of derived classes to be called, This should be changed..
// So we inspect only the being of the module list here.
typename mapType::iterator it = m_modules.begin( );
+ if( it == m_modules.end( ) ) return;
+
if( (*it).second.registry ) {
if( (*it).second.registry->destroyModule != 0 ) {
(*it).second.registry->destroyModule( (*it).second.user_data );