diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2014-10-16 12:47:03 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2014-10-16 12:47:03 +0200 |
commit | 2e97443290938f320d8c47d803dd5c9720ffc67a (patch) | |
tree | b2688076ce38c12f7d976606875a5de21ffd0fbc | |
parent | b4e5ae43121b2b1c5d09149b0a5b8dd670fd9977 (diff) | |
download | crawler-2e97443290938f320d8c47d803dd5c9720ffc67a.tar.gz crawler-2e97443290938f320d8c47d803dd5c9720ffc67a.tar.bz2 |
fixed destructor of module loader when no modules have been loaded
-rwxr-xr-x | include/module/ModuleLoader.hpp | 13 |
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 ); |