diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-13 21:34:29 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-13 21:34:29 +0000 |
commit | 37fd031da06761c8a050105b55d73a8ab499fb74 (patch) | |
tree | 6709b8882806cfe2a4dd20bdcd0aa5581344955e /include | |
parent | 99064f734b9b1513c1d3b3792d6ea8102aae26e1 (diff) |
Remove Command and ModeHandler objects in their destructors; fixes possible pointer leak if a module was not careful when triggering exceptions in its constructor
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11872 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r-- | include/command_parse.h | 15 | ||||
-rw-r--r-- | include/ctables.h | 6 | ||||
-rw-r--r-- | include/inspircd.h | 6 | ||||
-rw-r--r-- | include/mode.h | 3 |
4 files changed, 7 insertions, 23 deletions
diff --git a/include/command_parse.h b/include/command_parse.h index 10dbef58d..35f5a7b0e 100644 --- a/include/command_parse.h +++ b/include/command_parse.h @@ -43,10 +43,6 @@ class CoreExport CommandParser : public classbase */ bool ProcessCommand(User *user, std::string &cmd); - /** Removes a command if the sources match. Used as a helper for - * safe hash_map delete while iter in RemoveCommands(const char* source). - */ - void RemoveCommand(nspace::hash_map<std::string,Command*>::iterator safei, Module* source); public: @@ -145,16 +141,15 @@ class CoreExport CommandParser : public classbase */ void DoLines(User* current, bool one_only = false); - /** Remove all commands relating to module 'source'. - * @param source A module which has introduced new commands - */ - void RemoveCommands(Module* source); - /** Add a new command to the commands hash * @param f The new Command to add to the list * @return True if the command was added */ - bool CreateCommand(Command *f); + bool AddCommand(Command *f); + + /** Removes a command. + */ + void RemoveCommand(Command* x); /** Translate nicknames in a string into UIDs, based on the TranslationType given. * @param to The translation type to use for the process. diff --git a/include/ctables.h b/include/ctables.h index c0c094e6f..0cf4c50d2 100644 --- a/include/ctables.h +++ b/include/ctables.h @@ -90,7 +90,7 @@ class CoreExport Command : public Extensible public: /** Command name */ - std::string command; + const std::string command; /** Creator module - never NULL */ Module* const creator; @@ -211,9 +211,7 @@ class CoreExport Command : public Extensible return works_before_reg; } - virtual ~Command() - { - } + virtual ~Command(); }; /** A hash of commands used by the core diff --git a/include/inspircd.h b/include/inspircd.h index 182d33c9c..700624892 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -727,12 +727,6 @@ class CoreExport InspIRCd : public classbase */ void RehashServer(); - /** Return the channel whos index number matches that provided - * @param The index number of the channel to fetch - * @return A channel record, or NUll if index < 0 or index >= InspIRCd::ChannelCount() - */ - Channel* GetChannelIndex(long index); - /** Dump text to a user target, splitting it appropriately to fit * @param User the user to dump the text to * @param LinePrefix text to prefix each complete line with diff --git a/include/mode.h b/include/mode.h index beb493810..a9b0da656 100644 --- a/include/mode.h +++ b/include/mode.h @@ -510,9 +510,6 @@ class CoreExport ModeParser : public classbase */ bool DelMode(ModeHandler* mh); - /** Delete all modes and mode watchers associated with a given module - */ - void RemoveModes(Module* mod); /** Add a mode watcher. * A mode watcher is triggered before and after a mode handler is * triggered. See the documentation of class ModeWatcher for more |