summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-13 21:34:29 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-13 21:34:29 +0000
commit37fd031da06761c8a050105b55d73a8ab499fb74 (patch)
tree6709b8882806cfe2a4dd20bdcd0aa5581344955e /include
parent99064f734b9b1513c1d3b3792d6ea8102aae26e1 (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.h15
-rw-r--r--include/ctables.h6
-rw-r--r--include/inspircd.h6
-rw-r--r--include/mode.h3
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