From f20bac996da46556a821c1b0244a202e652fe247 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 30 May 2014 15:45:57 -0400 Subject: Fix Windows build and update library names to the newer ones. Also fix crash on Windows when unloading a module because it threw an exception. --- src/modulemanager.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index 2832a562a..71e692dd2 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -185,6 +185,7 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) Module *m; + ModuleReturn moderr = MOD_ERR_OK; try { m = func(modname, nick); @@ -192,9 +193,14 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) catch (const ModuleException &ex) { Log() << "Error while loading " << modname << ": " << ex.GetReason(); - /*if (dlclose(handle)) - Log() << dlerror();*/ - return MOD_ERR_EXCEPTION; + moderr = MOD_ERR_EXCEPTION; + } + + if (moderr != MOD_ERR_OK) + { + if (dlclose(handle)) + Log() << dlerror(); + return moderr; } m->filename = pbuf; @@ -236,18 +242,22 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) catch (const ModuleException &ex) { Log() << "Module " << modname << " couldn't load:" << ex.GetReason(); - DeleteModule(m); - return MOD_ERR_EXCEPTION; + moderr = MOD_ERR_EXCEPTION; } catch (const ConfigException &ex) { Log() << "Module " << modname << " couldn't load due to configuration problems: " << ex.GetReason(); - DeleteModule(m); - return MOD_ERR_EXCEPTION; + moderr = MOD_ERR_EXCEPTION; } catch (const NotImplementedException &ex) { } + + if (moderr != MOD_ERR_OK) + { + DeleteModule(m); + return moderr; + } Log(LOG_DEBUG) << "Module " << modname << " loaded."; -- cgit