summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-05-30 15:45:57 -0400
committerAdam <Adam@anope.org>2014-05-30 18:14:55 -0400
commitf20bac996da46556a821c1b0244a202e652fe247 (patch)
tree438bfc81c3094163bd37f552cac0f5acc335c58a /src
parent93bfd4cbe1674c063dca17e7176364f30348eb7c (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')
-rw-r--r--src/modulemanager.cpp24
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.";