From 37fd031da06761c8a050105b55d73a8ab499fb74 Mon Sep 17 00:00:00 2001 From: danieldg Date: Tue, 13 Oct 2009 21:34:29 +0000 Subject: 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 --- src/mode.cpp | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'src/mode.cpp') diff --git a/src/mode.cpp b/src/mode.cpp index c37407223..1ac2b9e64 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -57,6 +57,7 @@ ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modelett ModeHandler::~ModeHandler() { + ServerInstance->Modes->DelMode(this); } bool ModeHandler::IsListMode() @@ -690,22 +691,6 @@ bool ModeParser::DelMode(ModeHandler* mh) return true; } -void ModeParser::RemoveModes(Module* mod) -{ - for(int i=0; i < 256; i++) - { - ModeHandler* mh = modehandlers[i]; - if (mh && mh->creator == mod) - DelMode(mh); - for(unsigned int j=0; j < modewatchers[i].size(); j++) - { - ModeWatcher* mw = modewatchers[i][j]; - if (mw && mw->creator == mod) - DelModeWatcher(mw); - } - } -} - ModeHandler* ModeParser::FindMode(unsigned const char modeletter, ModeType mt) { unsigned char mask = 0; -- cgit v1.3.1-10-gc9f91