summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2014-10-16 12:47:03 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2014-10-16 12:47:03 +0200
commit2e97443290938f320d8c47d803dd5c9720ffc67a (patch)
treeb2688076ce38c12f7d976606875a5de21ffd0fbc
parentb4e5ae43121b2b1c5d09149b0a5b8dd670fd9977 (diff)
downloadcrawler-2e97443290938f320d8c47d803dd5c9720ffc67a.tar.gz
crawler-2e97443290938f320d8c47d803dd5c9720ffc67a.tar.bz2
fixed destructor of module loader when no modules have been loaded
-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 );