From e8ad509aa5b4bed4f61f32fd1ac7bfeb49685be5 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 27 May 2014 12:53:20 -0400 Subject: Fix dlerror() on Windows and do not abort if err is not set --- src/modulemanager.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/modulemanager.cpp') diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index 07ac46ee1..2832a562a 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -159,25 +159,25 @@ ModuleReturn ModuleManager::LoadModule(const Anope::string &modname, User *u) dlerror(); void *handle = dlopen(pbuf.c_str(), RTLD_NOW); const char *err = dlerror(); - if (!handle && err && *err) + if (!handle) { - Log() << err; + if (err && *err) + Log() << err; return MOD_ERR_NOLOAD; } dlerror(); Module *(*func)(const Anope::string &, const Anope::string &) = function_cast(dlsym(handle, "AnopeInit")); err = dlerror(); - if (!func && err && *err) + if (!func) { Log() << "No init function found, not an Anope module"; + if (err && *err) + Log(LOG_DEBUG) << err; dlclose(handle); return MOD_ERR_NOLOAD; } - - if (!func) - throw CoreException("Couldn't find constructor, yet moderror wasn't set?"); - + /* Create module. */ Anope::string nick; if (u) @@ -192,6 +192,8 @@ 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; } -- cgit