diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-02 03:15:46 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-02 03:15:46 +0000 |
commit | 8456cf5ccd44911f4e56538fe0880dd7fc7cd96d (patch) | |
tree | 3e1f96b94cc86506a615d8b39131ff6ea7c1b64c /include/dynamic.h | |
parent | 87d031609bb8b7d2cd186d8f24bcb853fd93798c (diff) |
Fix valgrind issues and crashes on exit
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11794 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/dynamic.h')
-rw-r--r-- | include/dynamic.h | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/include/dynamic.h b/include/dynamic.h index ec09675e0..fe150716e 100644 --- a/include/dynamic.h +++ b/include/dynamic.h @@ -89,25 +89,21 @@ class CoreExport FindSymbolException : public CoreException virtual ~FindSymbolException() throw() {}; }; +class Module; /** This is the highest-level class of the DLLFactory system used to load InspIRCd modules and commands. * All the dirty mucking around with dl*() is done by DLLManager, all this does it put a pretty shell on * it and make it nice to use to load modules and core commands. This class is quite specialised for these * two uses and it may not be useful more generally -- use DLLManager directly for that. */ -template <typename ReturnType> class CoreExport DLLFactory : public DLLManager +class CoreExport DLLFactory : public DLLManager { - protected: - /** This typedef represents the init_* function within each module or command. - * The init_module function is the only exported extern "C" declaration - * in any module file. In a cmd_*.cpp file the equivilant is init_command - */ - typedef ReturnType * (initfunctype) (); + public: + typedef Module* (initfunctype)(); /** Pointer to the init function. */ - initfunctype* init_func; + initfunctype* const init_func; - public: /** Default constructor. * This constructor passes its paramerers down through DLLFactoryBase and then DLLManager * to load the module, then calls the factory function to retrieve a pointer to a ModuleFactory @@ -132,21 +128,6 @@ template <typename ReturnType> class CoreExport DLLFactory : public DLLManager } } - /** Calls the 'init_module' C exported function within a module, which - * returns a pointer to a Module derived object. - */ - ReturnType* CallInit() - { - if(init_func) - { - return init_func(); - } - else - { - return NULL; - } - } - /** The destructor deletes the ModuleFactory pointer. */ ~DLLFactory() |