From 2e97443290938f320d8c47d803dd5c9720ffc67a Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 16 Oct 2014 12:47:03 +0200 Subject: fixed destructor of module loader when no modules have been loaded --- include/module/ModuleLoader.hpp | 13 +++++++++---- 1 file 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 ); -- cgit v1.2.3-54-g00ecf