diff options
author | Adam <Adam@drink-coca-cola.info> | 2010-05-06 14:16:59 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-06-18 20:58:55 -0400 |
commit | 5d437d9ab5988c36def1a78c7d3d3077eb6804e3 (patch) | |
tree | 2b44daa849e45bdb3fea404d5de76e0af3a8cf17 | |
parent | 031bc4a8b0dc456aca4d70dc260f626b64cd82b3 (diff) |
Renamed the init_module function to AnopeInit - Some systems have an init_module function outside of Anope which causes a crash if you try to load a non-Anope module
-rw-r--r-- | include/services.h | 14 | ||||
-rw-r--r-- | src/modulemanager.cpp | 8 |
2 files changed, 11 insertions, 11 deletions
diff --git a/include/services.h b/include/services.h index 43e91a21b..ae36f8dbd 100644 --- a/include/services.h +++ b/include/services.h @@ -158,12 +158,12 @@ extern int strncasecmp(const char *, const char *, size_t); /** This definition is used as shorthand for the various classes * and functions needed to make a module loadable by the OS. - * It defines the class factory and external init_module function. + * It defines the class factory and external AnopeInit and AnopeFini functions. */ #ifdef _WIN32 #define MODULE_INIT(x) \ - extern "C" DllExport Module *init_module(const std::string &, const std::string &); \ - extern "C" Module *init_module(const std::string &modname, const std::string &creator) \ + extern "C" DllExport Module *AnopeInit(const std::string &, const std::string &); \ + extern "C" Module *AnopeInit(const std::string &modname, const std::string &creator) \ { \ return new x(modname, creator); \ } \ @@ -177,19 +177,19 @@ extern int strncasecmp(const char *, const char *, size_t); } \ return TRUE; \ } \ - extern "C" DllExport void destroy_module(x *); \ - extern "C" void destroy_module(x *m) \ + extern "C" DllExport void AnopeFini(x *); \ + extern "C" void AnopeFini(x *m) \ { \ delete m; \ } #else #define MODULE_INIT(x) \ - extern "C" DllExport Module *init_module(const std::string &modname, const std::string &creator) \ + extern "C" DllExport Module *AnopeInit(const std::string &modname, const std::string &creator) \ { \ return new x(modname, creator); \ } \ - extern "C" DllExport void destroy_module(x *m) \ + extern "C" DllExport void AnopeFini(x *m) \ { \ delete m; \ } diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp index a9f1eb2f0..18ab2bda4 100644 --- a/src/modulemanager.cpp +++ b/src/modulemanager.cpp @@ -164,10 +164,10 @@ int ModuleManager::LoadModule(const std::string &modname, User * u) } ano_modclearerr(); - func = function_cast<Module *(*)(const std::string &, const std::string &)>(dlsym(handle, "init_module")); + func = function_cast<Module *(*)(const std::string &, const std::string &)>(dlsym(handle, "AnopeInit")); if (func == NULL && (err = dlerror()) != NULL) { - Alog() << "No magical init function found, not an Anope module"; + Alog() << "No init function found, not an Anope module"; dlclose(handle); return MOD_ERR_NOLOAD; } @@ -292,10 +292,10 @@ void ModuleManager::DeleteModule(Module *m) handle = m->handle; ano_modclearerr(); - destroy_func = function_cast<void (*)(Module *)>(dlsym(m->handle, "destroy_module")); + destroy_func = function_cast<void (*)(Module *)>(dlsym(m->handle, "AnopeFini")); if (destroy_func == NULL && (err = dlerror()) != NULL) { - Alog() << "No magical destroy function found, chancing delete..."; + Alog() << "No destroy function found, chancing delete..."; delete m; /* we just have to chance they haven't overwrote the delete operator then... */ } else |