diff options
author | Adam <Adam@anope.org> | 2014-05-30 15:45:57 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2014-05-30 18:14:55 -0400 |
commit | f20bac996da46556a821c1b0244a202e652fe247 (patch) | |
tree | 438bfc81c3094163bd37f552cac0f5acc335c58a /src/modulemanager.cpp | |
parent | 93bfd4cbe1674c063dca17e7176364f30348eb7c (diff) |
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.
Diffstat (limited to 'src/modulemanager.cpp')
-rw-r--r-- | src/modulemanager.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
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."; |