diff options
| author | robbeh <robbeh@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-15 21:25:40 +0000 |
|---|---|---|
| committer | robbeh <robbeh@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-15 21:25:40 +0000 |
| commit | 2d768eb325fc7665093faedf62e08dd5f98cc5f8 (patch) | |
| tree | 9345b8c524d6c65f2c2a2f92e0ce5bb70194b822 /include | |
| parent | f0fe5427ff22c005220b0189ed745a38314dc21b (diff) | |
Modules now delete themselves instead of letting the core do it (just incase one of them has used a custom delete operator)
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1729 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'include')
| -rw-r--r-- | include/modules.h | 11 | ||||
| -rw-r--r-- | include/services.h | 10 |
2 files changed, 17 insertions, 4 deletions
diff --git a/include/modules.h b/include/modules.h index c09b234c2..9e2889646 100644 --- a/include/modules.h +++ b/include/modules.h @@ -259,7 +259,7 @@ CoreExport class Module * @return returns MOD_ERR_OK on success */ int DelCommand(CommandHash * cmdTable[], const char *name); - + /** * Adds a timed callback for the current module. * This allows modules to request that anope executes one of there functions at a time in the future, without an event to trigger it @@ -272,7 +272,7 @@ CoreExport class Module * @see moduleDelCallBack **/ int AddCallback(const char *name, time_t when, int (*func) (int argc, char *argv[]), int argc, char **argv); - + /** * Allow modules to delete a timed callback by name. * @param name the name of the callback they wish to delete @@ -307,10 +307,15 @@ CoreExport class ModuleManager * @return MOD_ERR_OK on success, anything else on fail */ static int UnloadModule(Module *m, User * u); - + /** Run all pending module timer callbacks. */ static void RunCallbacks(); +private: + /** Call the module_delete function to safely delete the module + * @param m the module to delete + */ + static void DeleteModule(Module *m); }; diff --git a/include/services.h b/include/services.h index 70aaf0066..af5b524c5 100644 --- a/include/services.h +++ b/include/services.h @@ -202,16 +202,24 @@ extern int strncasecmp(const char *, const char *, size_t); break; \ } \ return TRUE; \ + } \ + extern "C" DllExport void *destroy_module(y *m) \ + { \ + delete m; \ } + #else #define MODULE_INIT(x, y) \ extern "C" DllExport Module *init_module(const std::string &modname, const std::string &creator) \ { \ return new y(x, creator); \ + } \ + extern "C" DllExport void destroy_module(y *m) \ + { \ + delete m; \ } #endif - /* Miscellaneous definitions. */ #include "defs.h" #include "slist.h" |
