diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:46:36 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:46:36 +0000 |
commit | ae6acab1ba3ddc144c599d5434bbcf6f1efa37ad (patch) | |
tree | f11b976d86c423b3b48030eb9701d6fc6a489950 /src/mode.cpp | |
parent | 1ea2fca7678ca3fe585c5812f9f62799e4a46ec5 (diff) |
Valgrind cleanup: deallocate RFC modes, clientlist, and uuidlist
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11614 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/mode.cpp')
-rw-r--r-- | src/mode.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 1986ed2bb..cbd58021c 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -1086,19 +1086,22 @@ ModeParser::ModeParser(InspIRCd* Instance) : ServerInstance(Instance) new ModeChannelPrivate(Instance), new ModeChannelModerated(Instance), new ModeChannelTopicOps(Instance), + new ModeChannelNoExternal(Instance), new ModeChannelInviteOnly(Instance), new ModeChannelKey(Instance), new ModeChannelLimit(Instance), + new ModeChannelBan(Instance), new ModeChannelOp(Instance), new ModeChannelHalfOp(Instance), new ModeChannelVoice(Instance), + new ModeUserWallops(Instance), new ModeUserInvisible(Instance), new ModeUserOperator(Instance), new ModeUserServerNoticeMask(Instance), - NULL +#define BUILTIN_MODE_COUNT 16 }; /* Clear mode handler list */ @@ -1108,9 +1111,25 @@ ModeParser::ModeParser(InspIRCd* Instance) : ServerInstance(Instance) LastParse.clear(); /* Initialise the RFC mode letters */ - for (int index = 0; modes[index]; index++) + for (int index = 0; index < BUILTIN_MODE_COUNT; index++) this->AddMode(modes[index]); seq = 0; memset(&sent, 0, sizeof(sent)); } + +ModeParser::~ModeParser() +{ + int count = 0; + for(int i=0; i < 256; i++) + { + ModeHandler* mh = modehandlers[i]; + if (mh) + { + count++; + delete mh; + } + } + if (count != BUILTIN_MODE_COUNT) + throw CoreException("Mode handler found non-core modes remaining at deallocation"); +} |