]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Change allocation of commands/modes
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 2 Sep 2009 00:43:04 +0000 (00:43 +0000)
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 2 Sep 2009 00:43:04 +0000 (00:43 +0000)
API change: Commands passed to AddCommand are no longer deleted automatically

This removes lots of needless heap allocation and fixes a few memory leaks by
allocating commands and modes as part of the Module rather than creating them
separately in the module constructor.

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11592 e03df62e-2008-0410-955e-edbf42e46eb7

88 files changed:
src/command_parse.cpp
src/modules/extra/m_ssl_gnutls.cpp
src/modules/m_allowinvite.cpp
src/modules/m_alltime.cpp
src/modules/m_auditorium.cpp
src/modules/m_banexception.cpp
src/modules/m_banredirect.cpp
src/modules/m_blockcaps.cpp
src/modules/m_blockcolor.cpp
src/modules/m_botmode.cpp
src/modules/m_callerid.cpp
src/modules/m_cap.cpp
src/modules/m_cban.cpp
src/modules/m_censor.cpp
src/modules/m_cgiirc.cpp
src/modules/m_chanfilter.cpp
src/modules/m_check.cpp
src/modules/m_chghost.cpp
src/modules/m_chgident.cpp
src/modules/m_chgname.cpp
src/modules/m_cloaking.cpp
src/modules/m_clones.cpp
src/modules/m_close.cpp
src/modules/m_commonchans.cpp
src/modules/m_customtitle.cpp
src/modules/m_cycle.cpp
src/modules/m_dccallow.cpp
src/modules/m_deaf.cpp
src/modules/m_delayjoin.cpp
src/modules/m_devoice.cpp
src/modules/m_filter.cpp
src/modules/m_globalload.cpp
src/modules/m_globops.cpp
src/modules/m_helpop.cpp
src/modules/m_hidechans.cpp
src/modules/m_hideoper.cpp
src/modules/m_invisible.cpp
src/modules/m_inviteexception.cpp
src/modules/m_joinflood.cpp
src/modules/m_jumpserver.cpp
src/modules/m_kicknorejoin.cpp
src/modules/m_knock.cpp
src/modules/m_lockserv.cpp
src/modules/m_maphide.cpp
src/modules/m_messageflood.cpp
src/modules/m_nickflood.cpp
src/modules/m_nicklock.cpp
src/modules/m_noctcp.cpp
src/modules/m_nokicks.cpp
src/modules/m_nonicks.cpp
src/modules/m_nonotice.cpp
src/modules/m_operchans.cpp
src/modules/m_opermotd.cpp
src/modules/m_password_hash.cpp
src/modules/m_permchannels.cpp
src/modules/m_randquote.cpp
src/modules/m_redirect.cpp
src/modules/m_remove.cpp
src/modules/m_rline.cpp
src/modules/m_sajoin.cpp
src/modules/m_sakick.cpp
src/modules/m_samode.cpp
src/modules/m_sanick.cpp
src/modules/m_sapart.cpp
src/modules/m_saquit.cpp
src/modules/m_sasl.cpp
src/modules/m_satopic.cpp
src/modules/m_services_account.cpp
src/modules/m_servprotect.cpp
src/modules/m_sethost.cpp
src/modules/m_setident.cpp
src/modules/m_setidle.cpp
src/modules/m_setname.cpp
src/modules/m_shun.cpp
src/modules/m_silence.cpp
src/modules/m_spanningtree/main.cpp
src/modules/m_sslinfo.cpp
src/modules/m_sslmodes.cpp
src/modules/m_stripcolor.cpp
src/modules/m_svshold.cpp
src/modules/m_swhois.cpp
src/modules/m_taxonomy.cpp
src/modules/m_timedbans.cpp
src/modules/m_tline.cpp
src/modules/m_uninvite.cpp
src/modules/m_userip.cpp
src/modules/m_vhost.cpp
src/modules/m_watch.cpp

index bf025be7ce5c4f505c1b3b31138edeff382175f3..a76ca2d4f6a5358663e57dfb94f0951069601c7d 100644 (file)
@@ -431,7 +431,6 @@ void CommandParser::RemoveCommand(Commandtable::iterator safei, const char* sour
        if (x->source == std::string(source))
        {
                cmdlist.erase(safei);
        if (x->source == std::string(source))
        {
                cmdlist.erase(safei);
-               delete x;
        }
 }
 
        }
 }
 
index f05a73227044d7f08e84389bc2b146408218ce90..b7b22538421e5d74145b6687a2c8b470b639bfa4 100644 (file)
@@ -110,12 +110,12 @@ class ModuleSSLGnuTLS : public Module
        int clientactive;
        bool cred_alloc;
 
        int clientactive;
        bool cred_alloc;
 
-       CommandStartTLS* starttls;
+       CommandStartTLS starttls;
 
  public:
 
        ModuleSSLGnuTLS(InspIRCd* Me)
 
  public:
 
        ModuleSSLGnuTLS(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), starttls(Me, this)
        {
                ServerInstance->Modules->PublishInterface("BufferedSocketHook", this);
 
        {
                ServerInstance->Modules->PublishInterface("BufferedSocketHook", this);
 
@@ -135,8 +135,7 @@ class ModuleSSLGnuTLS : public Module
                        I_OnPostConnect, I_OnEvent, I_OnHookUserIO };
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
 
                        I_OnPostConnect, I_OnEvent, I_OnHookUserIO };
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
 
-               starttls = new CommandStartTLS(ServerInstance, this);
-               ServerInstance->AddCommand(starttls);
+               ServerInstance->AddCommand(&starttls);
        }
 
        virtual void OnRehash(User* user)
        }
 
        virtual void OnRehash(User* user)
index 4805e1ac6d6034f9ff0e24fa9ad035b183fe57f2..e177f8ee62202a59810c8a9bfb2677c37ab917b6 100644 (file)
@@ -23,13 +23,12 @@ class AllowInvite : public SimpleChannelModeHandler
 
 class ModuleAllowInvite : public Module
 {
 
 class ModuleAllowInvite : public Module
 {
-       AllowInvite *ni;
+       AllowInvite ni;
  public:
 
  public:
 
-       ModuleAllowInvite(InspIRCd* Me) : Module(Me)
+       ModuleAllowInvite(InspIRCd* Me) : Module(Me), ni(Me)
        {
        {
-               ni = new AllowInvite(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(ni))
+               if (!ServerInstance->Modes->AddMode(&ni))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreInvite, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreInvite, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -62,8 +61,7 @@ class ModuleAllowInvite : public Module
 
        virtual ~ModuleAllowInvite()
        {
 
        virtual ~ModuleAllowInvite()
        {
-               ServerInstance->Modes->DelMode(ni);
-               delete ni;
+               ServerInstance->Modes->DelMode(&ni);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index d7ed6e76530169554b88caa440fea769da3065e9..79a94c2b6f8114bb9697947092b2cd13c92ff2ce 100644 (file)
@@ -50,14 +50,12 @@ class CommandAlltime : public Command
 
 class Modulealltime : public Module
 {
 
 class Modulealltime : public Module
 {
-       CommandAlltime *mycommand;
+       CommandAlltime mycommand;
  public:
        Modulealltime(InspIRCd *Me)
  public:
        Modulealltime(InspIRCd *Me)
-               : Module(Me)
+               : Module(Me), mycommand(Me)
        {
        {
-               mycommand = new CommandAlltime(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&mycommand);
        }
 
        virtual ~Modulealltime()
        }
 
        virtual ~Modulealltime()
index fa55d108e4244c30716d37d7e17aba5cc83c911b..19b37e245c1e82b6e122824d2b9405d9d0aa80b8 100644 (file)
@@ -37,19 +37,15 @@ class AuditoriumMode : public ModeHandler
 class ModuleAuditorium : public Module
 {
  private:
 class ModuleAuditorium : public Module
 {
  private:
-       AuditoriumMode* aum;
+       AuditoriumMode aum;
        bool ShowOps;
        bool OperOverride;
  public:
        ModuleAuditorium(InspIRCd* Me)
        bool ShowOps;
        bool OperOverride;
  public:
        ModuleAuditorium(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), aum(Me)
        {
        {
-               aum = new AuditoriumMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(aum))
-               {
-                       delete aum;
+               if (!ServerInstance->Modes->AddMode(&aum))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-               }
 
                OnRehash(NULL);
 
 
                OnRehash(NULL);
 
@@ -60,8 +56,7 @@ class ModuleAuditorium : public Module
 
        virtual ~ModuleAuditorium()
        {
 
        virtual ~ModuleAuditorium()
        {
-               ServerInstance->Modes->DelMode(aum);
-               delete aum;
+               ServerInstance->Modes->DelMode(&aum);
        }
 
        virtual void OnRehash(User* user)
        }
 
        virtual void OnRehash(User* user)
index b93e9bf8bef51b3510206865ceae6976f6213c85..93267e03c3420dbc11c4217114792e4bf31e3f13 100644 (file)
@@ -37,18 +37,16 @@ class BanException : public ListModeBase
 
 class ModuleBanException : public Module
 {
 
 class ModuleBanException : public Module
 {
-       BanException* be;
-
+       BanException be;
 
 public:
 
 public:
-       ModuleBanException(InspIRCd* Me) : Module(Me)
+       ModuleBanException(InspIRCd* Me) : Module(Me), be(Me)
        {
        {
-               be = new BanException(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(be))
+               if (!ServerInstance->Modes->AddMode(&be))
                        throw ModuleException("Could not add new modes!");
                ServerInstance->Modules->PublishInterface("ChannelBanList", this);
 
                        throw ModuleException("Could not add new modes!");
                ServerInstance->Modules->PublishInterface("ChannelBanList", this);
 
-               be->DoImplements(this);
+               be.DoImplements(this);
                Implementation list[] = { I_OnRehash, I_OnRequest, I_On005Numeric, I_OnCheckBan, I_OnCheckExtBan, I_OnCheckStringExtBan };
                Me->Modules->Attach(list, this, 6);
 
                Implementation list[] = { I_OnRehash, I_OnRequest, I_On005Numeric, I_OnCheckBan, I_OnCheckExtBan, I_OnCheckStringExtBan };
                Me->Modules->Attach(list, this, 6);
 
@@ -64,7 +62,7 @@ public:
                if (chan != NULL)
                {
                        modelist *list;
                if (chan != NULL)
                {
                        modelist *list;
-                       chan->GetExt(be->GetInfoKey(), list);
+                       chan->GetExt(be.GetInfoKey(), list);
 
                        if (!list)
                                return 0;
 
                        if (!list)
                                return 0;
@@ -93,7 +91,7 @@ public:
                if (chan != NULL)
                {
                        modelist *list;
                if (chan != NULL)
                {
                        modelist *list;
-                       chan->GetExt(be->GetInfoKey(), list);
+                       chan->GetExt(be.GetInfoKey(), list);
 
                        if (!list)
                                return 0;
 
                        if (!list)
                                return 0;
@@ -117,7 +115,7 @@ public:
                if (chan != NULL)
                {
                        modelist* list;
                if (chan != NULL)
                {
                        modelist* list;
-                       chan->GetExt(be->GetInfoKey(), list);
+                       chan->GetExt(be.GetInfoKey(), list);
 
                        if (!list)
                        {
 
                        if (!list)
                        {
@@ -140,27 +138,27 @@ public:
 
        virtual void OnCleanup(int target_type, void* item)
        {
 
        virtual void OnCleanup(int target_type, void* item)
        {
-               be->DoCleanup(target_type, item);
+               be.DoCleanup(target_type, item);
        }
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
        }
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
-               be->DoSyncChannel(chan, proto, opaque);
+               be.DoSyncChannel(chan, proto, opaque);
        }
 
        virtual void OnChannelDelete(Channel* chan)
        {
        }
 
        virtual void OnChannelDelete(Channel* chan)
        {
-               be->DoChannelDelete(chan);
+               be.DoChannelDelete(chan);
        }
 
        virtual void OnRehash(User* user)
        {
        }
 
        virtual void OnRehash(User* user)
        {
-               be->DoRehash();
+               be.DoRehash();
        }
 
        virtual const char* OnRequest(Request* request)
        {
        }
 
        virtual const char* OnRequest(Request* request)
        {
-               return be->DoOnRequest(request);
+               return be.DoOnRequest(request);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
@@ -170,8 +168,7 @@ public:
 
        virtual ~ModuleBanException()
        {
 
        virtual ~ModuleBanException()
        {
-               ServerInstance->Modes->DelMode(be);
-               delete be;
+               ServerInstance->Modes->DelMode(&be);
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
index f3f68bc7ba79d72b59655d2dad66efe457ed1cf0..bec69e60840964484dd30000a62d4ecec0ac31fe 100644 (file)
@@ -195,22 +195,18 @@ class BanRedirect : public ModeWatcher
 
 class ModuleBanRedirect : public Module
 {
 
 class ModuleBanRedirect : public Module
 {
-       BanRedirect* re;
+       BanRedirect re;
        bool nofollow;
        Module* ExceptionModule;
 
  public:
        ModuleBanRedirect(InspIRCd* Me)
        bool nofollow;
        Module* ExceptionModule;
 
  public:
        ModuleBanRedirect(InspIRCd* Me)
-       : Module(Me)
+       : Module(Me), re(Me)
        {
        {
-               re = new BanRedirect(Me);
                nofollow = false;
 
                nofollow = false;
 
-               if(!ServerInstance->Modes->AddModeWatcher(re))
-               {
-                       delete re;
+               if(!ServerInstance->Modes->AddModeWatcher(&re))
                        throw ModuleException("Could not add mode watcher");
                        throw ModuleException("Could not add mode watcher");
-               }
 
                OnRehash(NULL);
 
 
                OnRehash(NULL);
 
@@ -333,8 +329,7 @@ class ModuleBanRedirect : public Module
 
        virtual ~ModuleBanRedirect()
        {
 
        virtual ~ModuleBanRedirect()
        {
-               ServerInstance->Modes->DelModeWatcher(re);
-               delete re;
+               ServerInstance->Modes->DelModeWatcher(&re);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index f5bcfd585bb25b222d66f58467f7da3ee884b144..8b0c73ce3707f243524d9d45ba25da2969ab746e 100644 (file)
@@ -26,21 +26,17 @@ class BlockCaps : public SimpleChannelModeHandler
 
 class ModuleBlockCAPS : public Module
 {
 
 class ModuleBlockCAPS : public Module
 {
-       BlockCaps* bc;
+       BlockCaps bc;
        int percent;
        unsigned int minlen;
        char capsmap[256];
 public:
 
        int percent;
        unsigned int minlen;
        char capsmap[256];
 public:
 
-       ModuleBlockCAPS(InspIRCd* Me) : Module(Me)
+       ModuleBlockCAPS(InspIRCd* Me) : Module(Me), bc(Me)
        {
                OnRehash(NULL);
        {
                OnRehash(NULL);
-               bc = new BlockCaps(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(bc))
-               {
-                       delete bc;
+               if (!ServerInstance->Modes->AddMode(&bc))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-               }
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
@@ -128,8 +124,7 @@ public:
 
        virtual ~ModuleBlockCAPS()
        {
 
        virtual ~ModuleBlockCAPS()
        {
-               ServerInstance->Modes->DelMode(bc);
-               delete bc;
+               ServerInstance->Modes->DelMode(&bc);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 6ed27d8109ec75d2269c7e121d7a61fed2c73131..020627d01a280f5900f4a7441127faabf1741e68 100644 (file)
@@ -26,13 +26,12 @@ class BlockColor : public SimpleChannelModeHandler
 class ModuleBlockColour : public Module
 {
        bool AllowChanOps;
 class ModuleBlockColour : public Module
 {
        bool AllowChanOps;
-       BlockColor *bc;
+       BlockColor bc;
  public:
 
  public:
 
-       ModuleBlockColour(InspIRCd* Me) : Module(Me)
+       ModuleBlockColour(InspIRCd* Me) : Module(Me), bc(Me)
        {
        {
-               bc = new BlockColor(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(bc))
+               if (!ServerInstance->Modes->AddMode(&bc))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -83,8 +82,7 @@ class ModuleBlockColour : public Module
 
        virtual ~ModuleBlockColour()
        {
 
        virtual ~ModuleBlockColour()
        {
-               ServerInstance->Modes->DelMode(bc);
-               delete bc;
+               ServerInstance->Modes->DelMode(&bc);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 7e8993cb363b02042afbd4d93c695626a73de08a..01bc4635798e7091340ad8f3b1ca58c9f473b336 100644 (file)
@@ -25,15 +25,12 @@ class BotMode : public SimpleUserModeHandler
 
 class ModuleBotMode : public Module
 {
 
 class ModuleBotMode : public Module
 {
-
-       BotMode* bm;
+       BotMode bm;
  public:
        ModuleBotMode(InspIRCd* Me)
  public:
        ModuleBotMode(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), bm(Me)
        {
        {
-
-               bm = new BotMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(bm))
+               if (!ServerInstance->Modes->AddMode(&bm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhois };
                ServerInstance->Modules->Attach(eventlist, this, 1);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhois };
                ServerInstance->Modules->Attach(eventlist, this, 1);
@@ -42,8 +39,7 @@ class ModuleBotMode : public Module
 
        virtual ~ModuleBotMode()
        {
 
        virtual ~ModuleBotMode()
        {
-               ServerInstance->Modes->DelMode(bm);
-               delete bm;
+               ServerInstance->Modes->DelMode(&bm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index a80246d64d0bd0a9ebb28fd51ff3d2bc3a7a2f09..1b9492ce14ecdbacd0cf33e0176982acc124c691 100644 (file)
@@ -307,8 +307,8 @@ public:
 class ModuleCallerID : public Module
 {
 private:
 class ModuleCallerID : public Module
 {
 private:
-       CommandAccept *mycommand;
-       User_g* myumode;
+       CommandAccept mycommand;
+       User_g myumode;
 
        // Configuration variables:
        unsigned int maxaccepts; // Maximum ACCEPT entries.
 
        // Configuration variables:
        unsigned int maxaccepts; // Maximum ACCEPT entries.
@@ -342,28 +342,14 @@ private:
        }
 
 public:
        }
 
 public:
-       ModuleCallerID(InspIRCd* Me) : Module(Me)
+       ModuleCallerID(InspIRCd* Me) : Module(Me), mycommand(Me, maxaccepts), myumode(Me)
        {
                OnRehash(NULL);
        {
                OnRehash(NULL);
-               mycommand = new CommandAccept(ServerInstance, maxaccepts);
-               myumode = new User_g(ServerInstance);
 
 
-               if (!ServerInstance->Modes->AddMode(myumode))
-               {
-                       delete mycommand;
-                       delete myumode;
+               if (!ServerInstance->Modes->AddMode(&myumode))
                        throw ModuleException("Could not add usermode +g");
                        throw ModuleException("Could not add usermode +g");
-               }
-               try
-               {
-                       ServerInstance->AddCommand(mycommand);
-               }
-               catch (const ModuleException& e)
-               {
-                       delete mycommand;
-                       delete myumode;
-                       throw ModuleException("Could not add command!");
-               }
+
+               ServerInstance->AddCommand(&mycommand);
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserPreNick, I_OnUserQuit, I_On005Numeric, I_OnUserPreNotice, I_OnUserPreMessage, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 7);
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserPreNick, I_OnUserQuit, I_On005Numeric, I_OnUserPreNotice, I_OnUserPreMessage, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 7);
@@ -371,8 +357,7 @@ public:
 
        virtual ~ModuleCallerID()
        {
 
        virtual ~ModuleCallerID()
        {
-               ServerInstance->Modes->DelMode(myumode);
-               delete myumode;
+               ServerInstance->Modes->DelMode(&myumode);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index d70b32cde9ca999b97d6b113a0f0d0eedda2003c..2e9a24811cbdd152c31a22bc83bf9c805c62de99 100644 (file)
@@ -132,14 +132,12 @@ class CommandCAP : public Command
 
 class ModuleCAP : public Module
 {
 
 class ModuleCAP : public Module
 {
-       CommandCAP* newcommand;
+       CommandCAP newcommand;
  public:
        ModuleCAP(InspIRCd* Me)
  public:
        ModuleCAP(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), newcommand(Me, this)
        {
        {
-               // Create a new command
-               newcommand = new CommandCAP(ServerInstance, this);
-               ServerInstance->AddCommand(newcommand);
+               ServerInstance->AddCommand(&newcommand);
 
                Implementation eventlist[] = { I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, 1);
 
                Implementation eventlist[] = { I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, 1);
index 39e95627226b1d763cbc7c081c2d106f4d5f1bfa..4b0319d87aab55c92e21eedf84840c6dff4d68db 100644 (file)
@@ -156,17 +156,15 @@ class CommandCBan : public Command
 
 class ModuleCBan : public Module
 {
 
 class ModuleCBan : public Module
 {
-       CommandCBan* mycommand;
-       CBanFactory *f;
+       CommandCBan mycommand;
+       CBanFactory f;
 
  public:
 
  public:
-       ModuleCBan(InspIRCd* Me) : Module(Me)
+       ModuleCBan(InspIRCd* Me) : Module(Me), mycommand(Me), f(Me)
        {
        {
-               f = new CBanFactory(ServerInstance);
-               ServerInstance->XLines->RegisterFactory(f);
+               ServerInstance->XLines->RegisterFactory(&f);
 
 
-               mycommand = new CommandCBan(Me);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&mycommand);
                Implementation eventlist[] = { I_OnUserPreJoin, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
                Implementation eventlist[] = { I_OnUserPreJoin, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
@@ -174,7 +172,7 @@ class ModuleCBan : public Module
        virtual ~ModuleCBan()
        {
                ServerInstance->XLines->DelAll("CBAN");
        virtual ~ModuleCBan()
        {
                ServerInstance->XLines->DelAll("CBAN");
-               ServerInstance->XLines->UnregisterFactory(f);
+               ServerInstance->XLines->UnregisterFactory(&f);
        }
 
        virtual int OnStats(char symbol, User* user, string_list &out)
        }
 
        virtual int OnStats(char symbol, User* user, string_list &out)
index 0f1c3f61c72a0cfc3dd73053363516867305538f..9c68be7fdcb23a62771d0d9deb7377fbe58ec063 100644 (file)
@@ -40,24 +40,18 @@ class CensorChannel : public SimpleChannelModeHandler
 class ModuleCensor : public Module
 {
        censor_t censors;
 class ModuleCensor : public Module
 {
        censor_t censors;
-       CensorUser *cu;
-       CensorChannel *cc;
+       CensorUser cu;
+       CensorChannel cc;
 
  public:
        ModuleCensor(InspIRCd* Me)
 
  public:
        ModuleCensor(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cu(Me), cc(Me)
        {
                /* Read the configuration file on startup.
                 */
                OnRehash(NULL);
        {
                /* Read the configuration file on startup.
                 */
                OnRehash(NULL);
-               cu = new CensorUser(ServerInstance);
-               cc = new CensorChannel(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(cu) || !ServerInstance->Modes->AddMode(cc))
-               {
-                       delete cu;
-                       delete cc;
+               if (!ServerInstance->Modes->AddMode(&cu) || !ServerInstance->Modes->AddMode(&cc))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-               }
                Implementation eventlist[] = { I_OnRehash, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRunTestSuite };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
                Implementation eventlist[] = { I_OnRehash, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRunTestSuite };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
@@ -65,10 +59,8 @@ class ModuleCensor : public Module
 
        virtual ~ModuleCensor()
        {
 
        virtual ~ModuleCensor()
        {
-               ServerInstance->Modes->DelMode(cu);
-               ServerInstance->Modes->DelMode(cc);
-               delete cu;
-               delete cc;
+               ServerInstance->Modes->DelMode(&cu);
+               ServerInstance->Modes->DelMode(&cc);
        }
 
        // format of a config entry is <badword text="shit" replace="poo">
        }
 
        // format of a config entry is <badword text="shit" replace="poo">
index 1467d0f6854daee9ce60b61dc592ae3573399711..8b7a77941d666c935fe02abccd12f309a9bc87bf 100644 (file)
@@ -53,9 +53,9 @@ typedef std::vector<CGIhost> CGIHostlist;
  */
 class CommandWebirc : public Command
 {
  */
 class CommandWebirc : public Command
 {
-       CGIHostlist Hosts;
-       bool notify;
+               bool notify;
        public:
        public:
+               CGIHostlist Hosts;
                CommandWebirc(InspIRCd* Instance, bool bnotify) : Command(Instance, "WEBIRC", 0, 4, true), notify(bnotify)
                {
                        this->source = "m_cgiirc.so";
                CommandWebirc(InspIRCd* Instance, bool bnotify) : Command(Instance, "WEBIRC", 0, 4, true), notify(bnotify)
                {
                        this->source = "m_cgiirc.so";
@@ -86,11 +86,6 @@ class CommandWebirc : public Command
                        ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s tried to use WEBIRC, but didn't match any configured webirc blocks.", user->GetFullRealHost().c_str());
                        return CMD_FAILURE;
                }
                        ServerInstance->SNO->WriteGlobalSno('a', "Connecting user %s tried to use WEBIRC, but didn't match any configured webirc blocks.", user->GetFullRealHost().c_str());
                        return CMD_FAILURE;
                }
-
-               void SetHosts(CGIHostlist &phosts)
-               {
-                       this->Hosts = phosts;
-               }
 };
 
 
 };
 
 
@@ -140,15 +135,13 @@ class CGIResolver : public Resolver
 
 class ModuleCgiIRC : public Module
 {
 
 class ModuleCgiIRC : public Module
 {
-       CommandWebirc* mycommand;
+       CommandWebirc cmd;
        bool NotifyOpers;
        bool NotifyOpers;
-       CGIHostlist Hosts;
 public:
 public:
-       ModuleCgiIRC(InspIRCd* Me) : Module(Me)
+       ModuleCgiIRC(InspIRCd* Me) : Module(Me), cmd(Me, NotifyOpers)
        {
        {
-               mycommand = new CommandWebirc(Me, NotifyOpers);
                OnRehash(NULL);
                OnRehash(NULL);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCleanup, I_OnSyncUserMetaData, I_OnDecodeMetaData, I_OnUserDisconnect, I_OnUserConnect };
                ServerInstance->Modules->Attach(eventlist, this, 7);
 
                Implementation eventlist[] = { I_OnRehash, I_OnUserRegister, I_OnCleanup, I_OnSyncUserMetaData, I_OnDecodeMetaData, I_OnUserDisconnect, I_OnUserConnect };
                ServerInstance->Modules->Attach(eventlist, this, 7);
@@ -163,7 +156,7 @@ public:
        virtual void OnRehash(User* user)
        {
                ConfigReader Conf(ServerInstance);
        virtual void OnRehash(User* user)
        {
                ConfigReader Conf(ServerInstance);
-               Hosts.clear();
+               cmd.Hosts.clear();
 
                NotifyOpers = Conf.ReadFlag("cgiirc", "opernotice", 0); // If we send an oper notice when a CGI:IRC has their host changed.
 
 
                NotifyOpers = Conf.ReadFlag("cgiirc", "opernotice", 0); // If we send an oper notice when a CGI:IRC has their host changed.
 
@@ -198,7 +191,7 @@ public:
                                        if (cgitype == INVALID)
                                                cgitype = PASS;
 
                                        if (cgitype == INVALID)
                                                cgitype = PASS;
 
-                                       Hosts.push_back(CGIhost(hostmask,cgitype, password.length() ? password : "" ));
+                                       cmd.Hosts.push_back(CGIhost(hostmask,cgitype, password.length() ? password : "" ));
                                }
                        }
                        else
                                }
                        }
                        else
@@ -207,8 +200,6 @@ public:
                                continue;
                        }
                }
                                continue;
                        }
                }
-
-               mycommand->SetHosts(Hosts);
        }
 
        virtual void OnCleanup(int target_type, void* item)
        }
 
        virtual void OnCleanup(int target_type, void* item)
@@ -267,7 +258,7 @@ public:
 
        virtual int OnUserRegister(User* user)
        {
 
        virtual int OnUserRegister(User* user)
        {
-               for(CGIHostlist::iterator iter = Hosts.begin(); iter != Hosts.end(); iter++)
+               for(CGIHostlist::iterator iter = cmd.Hosts.begin(); iter != cmd.Hosts.end(); iter++)
                {
                        if(InspIRCd::Match(user->host, iter->hostmask, ascii_case_insensitive_map) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask, ascii_case_insensitive_map))
                        {
                {
                        if(InspIRCd::Match(user->host, iter->hostmask, ascii_case_insensitive_map) || InspIRCd::MatchCIDR(user->GetIPString(), iter->hostmask, ascii_case_insensitive_map))
                        {
index 02c39aefe007eaca3a8e2741f5cd0be43f6274de..d9808642102063013e787b2245e827d343e033ec 100644 (file)
@@ -57,20 +57,18 @@ class ChanFilter : public ListModeBase
 
 class ModuleChanFilter : public Module
 {
 
 class ModuleChanFilter : public Module
 {
-
-       ChanFilter* cf;
+       ChanFilter cf;
        bool hidemask;
 
  public:
 
        ModuleChanFilter(InspIRCd* Me)
        bool hidemask;
 
  public:
 
        ModuleChanFilter(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cf(Me)
        {
        {
-               cf = new ChanFilter(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(cf))
+               if (!ServerInstance->Modes->AddMode(&cf))
                        throw ModuleException("Could not add new modes!");
 
                        throw ModuleException("Could not add new modes!");
 
-               cf->DoImplements(this);
+               cf.DoImplements(this);
                Implementation eventlist[] = { I_OnCleanup, I_OnChannelDelete, I_OnRehash, I_OnUserPreMessage, I_OnUserPreNotice, I_OnSyncChannel };
                ServerInstance->Modules->Attach(eventlist, this, 6);
 
                Implementation eventlist[] = { I_OnCleanup, I_OnChannelDelete, I_OnRehash, I_OnUserPreMessage, I_OnUserPreNotice, I_OnSyncChannel };
                ServerInstance->Modules->Attach(eventlist, this, 6);
 
@@ -80,14 +78,14 @@ class ModuleChanFilter : public Module
 
        virtual void OnChannelDelete(Channel* chan)
        {
 
        virtual void OnChannelDelete(Channel* chan)
        {
-               cf->DoChannelDelete(chan);
+               cf.DoChannelDelete(chan);
        }
 
        virtual void OnRehash(User* user)
        {
                ConfigReader Conf(ServerInstance);
                hidemask = Conf.ReadFlag("chanfilter", "hidemask", 0);
        }
 
        virtual void OnRehash(User* user)
        {
                ConfigReader Conf(ServerInstance);
                hidemask = Conf.ReadFlag("chanfilter", "hidemask", 0);
-               cf->DoRehash();
+               cf.DoRehash();
        }
 
        virtual int ProcessMessages(User* user,Channel* chan,std::string &text)
        }
 
        virtual int ProcessMessages(User* user,Channel* chan,std::string &text)
@@ -96,7 +94,7 @@ class ModuleChanFilter : public Module
                        return 0;
 
                modelist* list;
                        return 0;
 
                modelist* list;
-               chan->GetExt(cf->GetInfoKey(), list);
+               chan->GetExt(cf.GetInfoKey(), list);
 
                if (list)
                {
 
                if (list)
                {
@@ -127,12 +125,12 @@ class ModuleChanFilter : public Module
 
        virtual void OnCleanup(int target_type, void* item)
        {
 
        virtual void OnCleanup(int target_type, void* item)
        {
-               cf->DoCleanup(target_type, item);
+               cf.DoCleanup(target_type, item);
        }
 
        virtual const char* OnRequest(Request* request)
        {
        }
 
        virtual const char* OnRequest(Request* request)
        {
-               return cf->DoOnRequest(request);
+               return cf.DoOnRequest(request);
        }
 
        virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
        }
 
        virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
@@ -142,7 +140,7 @@ class ModuleChanFilter : public Module
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
-               cf->DoSyncChannel(chan, proto, opaque);
+               cf.DoSyncChannel(chan, proto, opaque);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
@@ -152,8 +150,7 @@ class ModuleChanFilter : public Module
 
        virtual ~ModuleChanFilter()
        {
 
        virtual ~ModuleChanFilter()
        {
-               ServerInstance->Modes->DelMode(cf);
-               delete cf;
+               ServerInstance->Modes->DelMode(&cf);
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
index 4172e19a324fb2d8363d62ff3aa7145859fc9fe3..3b79081adabab01a6f00e009243cae6e69c818fe 100644 (file)
@@ -190,12 +190,11 @@ class CommandCheck : public Command
 class ModuleCheck : public Module
 {
  private:
 class ModuleCheck : public Module
 {
  private:
-       CommandCheck *mycommand;
+       CommandCheck mycommand;
  public:
  public:
-       ModuleCheck(InspIRCd* Me) : Module(Me)
+       ModuleCheck(InspIRCd* Me) : Module(Me), mycommand(Me, this)
        {
        {
-               mycommand = new CommandCheck(ServerInstance, this);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&mycommand);
        }
 
        virtual ~ModuleCheck()
        }
 
        virtual ~ModuleCheck()
@@ -211,7 +210,7 @@ class ModuleCheck : public Module
        {
                User* user = static_cast<User*>(opaque);
                user->WriteServ("304 " + std::string(user->nick) + " :CHECK meta:" + name + " " + value);
        {
                User* user = static_cast<User*>(opaque);
                user->WriteServ("304 " + std::string(user->nick) + " :CHECK meta:" + name + " " + value);
-               mycommand->md_sent = true;
+               mycommand.md_sent = true;
        }
 };
 
        }
 };
 
index e29bb1bed915b853c08f795ef19cbeacceba7b27..cfd8f60352936c954db7a50e05e0dc9364a0ec03 100644 (file)
@@ -81,15 +81,14 @@ class CommandChghost : public Command
 
 class ModuleChgHost : public Module
 {
 
 class ModuleChgHost : public Module
 {
-       CommandChghost* mycommand;
+       CommandChghost cmd;
        char hostmap[256];
  public:
        ModuleChgHost(InspIRCd* Me)
        char hostmap[256];
  public:
        ModuleChgHost(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me, hostmap)
        {
                OnRehash(NULL);
        {
                OnRehash(NULL);
-               mycommand = new CommandChghost(ServerInstance, hostmap);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
                Implementation eventlist[] = { I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
index 82c34457a73451f5f7400fd596c5e66f88fb227d..9dc8cbd50c22406e7c67860e46bc03b22384d803 100644 (file)
@@ -68,15 +68,12 @@ class CommandChgident : public Command
 
 class ModuleChgIdent : public Module
 {
 
 class ModuleChgIdent : public Module
 {
-       CommandChgident* mycommand;
-
+       CommandChgident cmd;
 
 public:
 
 public:
-       ModuleChgIdent(InspIRCd* Me) : Module(Me)
+       ModuleChgIdent(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-               mycommand = new CommandChgident(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleChgIdent()
        }
 
        virtual ~ModuleChgIdent()
index 29fc695abccbf04af1c3829b77243be2aec7f79d..704e142bcb9f84e1d2197ee162f2ed88e1069ba8 100644 (file)
@@ -63,15 +63,12 @@ class CommandChgname : public Command
 
 class ModuleChgName : public Module
 {
 
 class ModuleChgName : public Module
 {
-       CommandChgname* mycommand;
-
+       CommandChgname cmd;
 
 public:
 
 public:
-       ModuleChgName(InspIRCd* Me) : Module(Me)
+       ModuleChgName(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-               mycommand = new CommandChgname(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleChgName()
        }
 
        virtual ~ModuleChgName()
index ae409ae9327c7e426db283d87bf290ee89942859..a236300f18404bf623e7ad73a12b738862dd4530 100644 (file)
@@ -250,16 +250,14 @@ class CloakUser : public ModeHandler
 class ModuleCloaking : public Module
 {
  private:
 class ModuleCloaking : public Module
 {
  private:
-
        CloakUser* cu;
        CloakUser* cu;
-       Module* HashModule;
 
  public:
        ModuleCloaking(InspIRCd* Me)
                : Module(Me)
        {
                /* Attempt to locate the md5 service provider, bail if we can't find it */
 
  public:
        ModuleCloaking(InspIRCd* Me)
                : Module(Me)
        {
                /* Attempt to locate the md5 service provider, bail if we can't find it */
-               HashModule = ServerInstance->Modules->Find("m_md5.so");
+               Module* HashModule = ServerInstance->Modules->Find("m_md5.so");
                if (!HashModule)
                        throw ModuleException("Can't find m_md5.so. Please load m_md5.so before m_cloaking.so.");
 
                if (!HashModule)
                        throw ModuleException("Can't find m_md5.so. Please load m_md5.so before m_cloaking.so.");
 
index fb1c0227c6d5ac60d1f7c8750305fcbf6f30ded3..58ecff17d22ab6b547d934d2622dfd2ac2e351f3 100644 (file)
@@ -60,14 +60,11 @@ class CommandClones : public Command
 class ModuleClones : public Module
 {
  private:
 class ModuleClones : public Module
 {
  private:
-       CommandClones *mycommand;
+       CommandClones cmd;
  public:
  public:
-       ModuleClones(InspIRCd* Me) : Module(Me)
+       ModuleClones(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandClones(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleClones()
        }
 
        virtual ~ModuleClones()
index 8c8fa92f554d0b280bccdc886b7c6c26720d06b3..1520c9df4f063045180599e69e9dc2f5cfab45e6 100644 (file)
@@ -65,15 +65,12 @@ class CommandClose : public Command
 
 class ModuleClose : public Module
 {
 
 class ModuleClose : public Module
 {
-       CommandClose* newcommand;
+       CommandClose cmd;
  public:
        ModuleClose(InspIRCd* Me)
  public:
        ModuleClose(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-               // Create a new command
-               newcommand = new CommandClose(ServerInstance);
-               ServerInstance->AddCommand(newcommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleClose()
        }
 
        virtual ~ModuleClose()
index 661acbe2e5ff69ad0f67559b265d203931acdf8a..1e84719554a7151c95b525faa70a1970b4a98dd0 100644 (file)
@@ -47,12 +47,11 @@ class PrivacyMode : public ModeHandler
 
 class ModulePrivacyMode : public Module
 {
 
 class ModulePrivacyMode : public Module
 {
-       PrivacyMode* pm;
+       PrivacyMode pm;
  public:
  public:
-       ModulePrivacyMode(InspIRCd* Me) : Module(Me)
+       ModulePrivacyMode(InspIRCd* Me) : Module(Me), pm(Me)
        {
        {
-               pm = new PrivacyMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(pm))
+               if (!ServerInstance->Modes->AddMode(&pm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -61,8 +60,7 @@ class ModulePrivacyMode : public Module
 
        virtual ~ModulePrivacyMode()
        {
 
        virtual ~ModulePrivacyMode()
        {
-               ServerInstance->Modes->DelMode(pm);
-               delete pm;
+               ServerInstance->Modes->DelMode(&pm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index d2d7e1c5d0998e993b19b64cc4bb8797fb1b89e9..35992d505bd3ba0d5d283793d2077e70128f2622 100644 (file)
@@ -90,14 +90,12 @@ class CommandTitle : public Command
 
 class ModuleCustomTitle : public Module
 {
 
 class ModuleCustomTitle : public Module
 {
-       CommandTitle* mycommand;
+       CommandTitle cmd;
 
  public:
 
  public:
-       ModuleCustomTitle(InspIRCd* Me) : Module(Me)
+       ModuleCustomTitle(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandTitle(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnDecodeMetaData, I_OnWhoisLine, I_OnSyncUserMetaData, I_OnUserQuit, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 5);
        }
                Implementation eventlist[] = { I_OnDecodeMetaData, I_OnWhoisLine, I_OnSyncUserMetaData, I_OnUserQuit, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 5);
        }
index 327598faefc847a17399b610be1b038005aee45d..923783e4bc49e0c3a73ee18164ec61057ef47f5b 100644 (file)
@@ -79,15 +79,12 @@ class CommandCycle : public Command
 
 class ModuleCycle : public Module
 {
 
 class ModuleCycle : public Module
 {
-       CommandCycle*   mycommand;
+       CommandCycle cmd;
  public:
        ModuleCycle(InspIRCd* Me)
  public:
        ModuleCycle(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandCycle(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleCycle()
        }
 
        virtual ~ModuleCycle()
index 56345932c56c0d3e92bd43b91a4cb3b0ad2a3815..97f0d2f13d916910e73b5f1eca9e80cde070d5cf 100644 (file)
@@ -244,15 +244,14 @@ class CommandDccallow : public Command
 
 class ModuleDCCAllow : public Module
 {
 
 class ModuleDCCAllow : public Module
 {
-       CommandDccallow* mycommand;
+       CommandDccallow cmd;
  public:
 
        ModuleDCCAllow(InspIRCd* Me)
  public:
 
        ModuleDCCAllow(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
                Conf = new ConfigReader(ServerInstance);
        {
                Conf = new ConfigReader(ServerInstance);
-               mycommand = new CommandDccallow(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                ReadFileConf();
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserQuit, I_OnUserPreNick, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 5);
                ReadFileConf();
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserQuit, I_OnUserPreNick, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 5);
index c72d26fe5500392f6cfbae26163e7ef7e7fc573b..7a810ae3174ac72b2df7c134cec050206b73569d 100644 (file)
@@ -47,17 +47,16 @@ class User_d : public ModeHandler
 
 class ModuleDeaf : public Module
 {
 
 class ModuleDeaf : public Module
 {
-       User_d* m1;
+       User_d m1;
 
        std::string deaf_bypasschars;
        std::string deaf_bypasschars_uline;
 
  public:
        ModuleDeaf(InspIRCd* Me)
 
        std::string deaf_bypasschars;
        std::string deaf_bypasschars_uline;
 
  public:
        ModuleDeaf(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), m1(Me)
        {
        {
-               m1 = new User_d(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(m1))
+               if (!ServerInstance->Modes->AddMode(&m1))
                        throw ModuleException("Could not add new modes!");
 
                OnRehash(NULL);
                        throw ModuleException("Could not add new modes!");
 
                OnRehash(NULL);
@@ -159,8 +158,7 @@ class ModuleDeaf : public Module
 
        virtual ~ModuleDeaf()
        {
 
        virtual ~ModuleDeaf()
        {
-               ServerInstance->Modes->DelMode(m1);
-               delete m1;
+               ServerInstance->Modes->DelMode(&m1);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 707557f08d857759c71cd66ceda4f62113a17d6f..11ce78aff943a097ea870b605169ccc0eda5c445 100644 (file)
@@ -28,13 +28,12 @@ class DelayJoinMode : public ModeHandler
 class ModuleDelayJoin : public Module
 {
  private:
 class ModuleDelayJoin : public Module
 {
  private:
-       DelayJoinMode* djm;
+       DelayJoinMode djm;
        CUList nl;
  public:
        CUList nl;
  public:
-       ModuleDelayJoin(InspIRCd* Me) : Module(Me)
+       ModuleDelayJoin(InspIRCd* Me) : Module(Me), djm(Me, this)
        {
        {
-               djm = new DelayJoinMode(ServerInstance, this);
-               if (!ServerInstance->Modes->AddMode(djm))
+               if (!ServerInstance->Modes->AddMode(&djm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnUserQuit, I_OnNamesListItem, I_OnText, I_OnHostCycle };
                ServerInstance->Modules->Attach(eventlist, this, 7);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserJoin, I_OnUserPart, I_OnUserKick, I_OnUserQuit, I_OnNamesListItem, I_OnText, I_OnHostCycle };
                ServerInstance->Modules->Attach(eventlist, this, 7);
@@ -76,8 +75,7 @@ ModeAction DelayJoinMode::OnModeChange(User* source, User* dest, Channel* channe
 
 ModuleDelayJoin::~ModuleDelayJoin()
 {
 
 ModuleDelayJoin::~ModuleDelayJoin()
 {
-       ServerInstance->Modes->DelMode(djm);
-       delete djm;
+       ServerInstance->Modes->DelMode(&djm);
 }
 
 Version ModuleDelayJoin::GetVersion()
 }
 
 Version ModuleDelayJoin::GetVersion()
index 940f13c2d158825f84b7cc6db562e59237d16099..0e6f68480d295ef1a98c56f05f0a26f8dcf5f58e 100644 (file)
@@ -53,14 +53,11 @@ class CommandDevoice : public Command
 
 class ModuleDeVoice : public Module
 {
 
 class ModuleDeVoice : public Module
 {
-       CommandDevoice *mycommand;
+       CommandDevoice cmd;
  public:
  public:
-       ModuleDeVoice(InspIRCd* Me) : Module(Me)
+       ModuleDeVoice(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandDevoice(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleDeVoice()
        }
 
        virtual ~ModuleDeVoice()
index fb4538224c423fdb4f89ae4c6ddd3a427718585d..9c4788f4664f8afd3314b1a836215529bbb4cd48 100644 (file)
@@ -95,11 +95,28 @@ class FilterResult : public classbase
        }
 };
 
        }
 };
 
-class CommandFilter;
+class FilterBase;
+
+class CommandFilter : public Command
+{
+       FilterBase* Base;
+ public:
+       CommandFilter(FilterBase* f, InspIRCd* Me, const std::string &ssource) : Command(Me, "FILTER", "o", 1, 5), Base(f)
+       {
+               this->source = ssource;
+               this->syntax = "<filter-definition> <action> <flags> [<gline-duration>] :<reason>";
+       }
+       CmdResult Handle(const std::vector<std::string>&, User*);
+
+       void TooFewParams(User* user, const std::string &extra_text)
+       {
+               user->WriteServ("NOTICE %s :*** Not enough parameters%s", user->nick.c_str(), extra_text.c_str());
+       }
+};
 
 class FilterBase : public Module
 {
 
 class FilterBase : public Module
 {
-       CommandFilter* filtcommand;
+       CommandFilter filtcommand;
        int flags;
 protected:
        std::vector<std::string> exemptfromfilter; // List of channel names excluded from filtering.
        int flags;
 protected:
        std::vector<std::string> exemptfromfilter; // List of channel names excluded from filtering.
@@ -126,99 +143,83 @@ protected:
        virtual void ReadFilters(ConfigReader &MyConf) = 0;
 };
 
        virtual void ReadFilters(ConfigReader &MyConf) = 0;
 };
 
-class CommandFilter : public Command
+CmdResult CommandFilter::Handle(const std::vector<std::string> &parameters, User *user)
 {
 {
-       FilterBase* Base;
- public:
-       CommandFilter(FilterBase* f, InspIRCd* Me, const std::string &ssource) : Command(Me, "FILTER", "o", 1, 5), Base(f)
+       if (parameters.size() == 1)
        {
        {
-               this->source = ssource;
-               this->syntax = "<filter-definition> <action> <flags> [<gline-duration>] :<reason>";
-       }
-
-       CmdResult Handle(const std::vector<std::string> &parameters, User *user)
-       {
-               if (parameters.size() == 1)
+               /* Deleting a filter */
+               if (Base->DeleteFilter(parameters[0]))
                {
                {
-                       /* Deleting a filter */
-                       if (Base->DeleteFilter(parameters[0]))
-                       {
-                               user->WriteServ("NOTICE %s :*** Removed filter '%s'", user->nick.c_str(), parameters[0].c_str());
-                               ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" removed filter '"+parameters[0]+"'");
-                               return CMD_SUCCESS;
-                       }
-                       else
-                       {
-                               user->WriteServ("NOTICE %s :*** Filter '%s' not found in list, try /stats s.", user->nick.c_str(), parameters[0].c_str());
-                               return CMD_FAILURE;
-                       }
+                       user->WriteServ("NOTICE %s :*** Removed filter '%s'", user->nick.c_str(), parameters[0].c_str());
+                       ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" removed filter '"+parameters[0]+"'");
+                       return CMD_SUCCESS;
                }
                else
                {
                }
                else
                {
-                       /* Adding a filter */
-                       if (parameters.size() >= 4)
-                       {
-                               std::string freeform = parameters[0];
-                               std::string type = parameters[1];
-                               std::string flags = parameters[2];
-                               std::string reason;
-                               long duration = 0;
+                       user->WriteServ("NOTICE %s :*** Filter '%s' not found in list, try /stats s.", user->nick.c_str(), parameters[0].c_str());
+                       return CMD_FAILURE;
+               }
+       }
+       else
+       {
+               /* Adding a filter */
+               if (parameters.size() >= 4)
+               {
+                       std::string freeform = parameters[0];
+                       std::string type = parameters[1];
+                       std::string flags = parameters[2];
+                       std::string reason;
+                       long duration = 0;
 
 
 
 
-                               if ((type != "gline") && (type != "none") && (type != "block") && (type != "kill") && (type != "silent"))
-                               {
-                                       user->WriteServ("NOTICE %s :*** Invalid filter type '%s'. Supported types are 'gline', 'none', 'block', 'silent' and 'kill'.", user->nick.c_str(), type.c_str());
-                                       return CMD_FAILURE;
-                               }
+                       if ((type != "gline") && (type != "none") && (type != "block") && (type != "kill") && (type != "silent"))
+                       {
+                               user->WriteServ("NOTICE %s :*** Invalid filter type '%s'. Supported types are 'gline', 'none', 'block', 'silent' and 'kill'.", user->nick.c_str(), type.c_str());
+                               return CMD_FAILURE;
+                       }
 
 
-                               if (type == "gline")
+                       if (type == "gline")
+                       {
+                               if (parameters.size() >= 5)
                                {
                                {
-                                       if (parameters.size() >= 5)
-                                       {
-                                               duration = ServerInstance->Duration(parameters[3]);
-                                               reason = parameters[4];
-                                       }
-                                       else
-                                       {
-                                               this->TooFewParams(user, ": When setting a gline type filter, a gline duration must be specified as the third parameter.");
-                                               return CMD_FAILURE;
-                                       }
+                                       duration = ServerInstance->Duration(parameters[3]);
+                                       reason = parameters[4];
                                }
                                else
                                {
                                }
                                else
                                {
-                                       reason = parameters[3];
+                                       this->TooFewParams(user, ": When setting a gline type filter, a gline duration must be specified as the third parameter.");
+                                       return CMD_FAILURE;
                                }
                                }
-                               std::pair<bool, std::string> result = Base->AddFilter(freeform, type, reason, duration, flags);
-                               if (result.first)
-                               {
-                                       user->WriteServ("NOTICE %s :*** Added filter '%s', type '%s'%s%s, flags '%s', reason: '%s'", user->nick.c_str(), freeform.c_str(),
-                                                       type.c_str(), (duration ? ", duration " : ""), (duration ? parameters[3].c_str() : ""),
-                                                       flags.c_str(), reason.c_str());
+                       }
+                       else
+                       {
+                               reason = parameters[3];
+                       }
+                       std::pair<bool, std::string> result = Base->AddFilter(freeform, type, reason, duration, flags);
+                       if (result.first)
+                       {
+                               user->WriteServ("NOTICE %s :*** Added filter '%s', type '%s'%s%s, flags '%s', reason: '%s'", user->nick.c_str(), freeform.c_str(),
+                                               type.c_str(), (duration ? ", duration " : ""), (duration ? parameters[3].c_str() : ""),
+                                               flags.c_str(), reason.c_str());
 
 
-                                       ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" added filter '"+freeform+"', type '"+type+"', "+(duration ? "duration "+parameters[3]+", " : "")+"flags '"+flags+"', reason: "+reason);
+                               ServerInstance->SNO->WriteToSnoMask(IS_LOCAL(user) ? 'a' : 'A', std::string("FILTER: ")+user->nick+" added filter '"+freeform+"', type '"+type+"', "+(duration ? "duration "+parameters[3]+", " : "")+"flags '"+flags+"', reason: "+reason);
 
 
-                                       return CMD_SUCCESS;
-                               }
-                               else
-                               {
-                                       user->WriteServ("NOTICE %s :*** Filter '%s' could not be added: %s", user->nick.c_str(), freeform.c_str(), result.second.c_str());
-                                       return CMD_FAILURE;
-                               }
+                               return CMD_SUCCESS;
                        }
                        else
                        {
                        }
                        else
                        {
-                               this->TooFewParams(user, ".");
+                               user->WriteServ("NOTICE %s :*** Filter '%s' could not be added: %s", user->nick.c_str(), freeform.c_str(), result.second.c_str());
                                return CMD_FAILURE;
                        }
                                return CMD_FAILURE;
                        }
-
                }
                }
-       }
+               else
+               {
+                       this->TooFewParams(user, ".");
+                       return CMD_FAILURE;
+               }
 
 
-       void TooFewParams(User* user, const std::string &extra_text)
-       {
-               user->WriteServ("NOTICE %s :*** Not enough parameters%s", user->nick.c_str(), extra_text.c_str());
        }
        }
-};
+}
 
 bool FilterBase::AppliesToMe(User* user, FilterResult* filter, int iflags)
 {
 
 bool FilterBase::AppliesToMe(User* user, FilterResult* filter, int iflags)
 {
@@ -235,11 +236,10 @@ bool FilterBase::AppliesToMe(User* user, FilterResult* filter, int iflags)
        return true;
 }
 
        return true;
 }
 
-FilterBase::FilterBase(InspIRCd* Me, const std::string &source) : Module(Me)
+FilterBase::FilterBase(InspIRCd* Me, const std::string &source) : Module(Me), filtcommand(this, Me, source)
 {
        Me->Modules->UseInterface("RegularExpression");
 {
        Me->Modules->UseInterface("RegularExpression");
-       filtcommand = new CommandFilter(this, Me, source);
-       ServerInstance->AddCommand(filtcommand);
+       ServerInstance->AddCommand(&filtcommand);
        Implementation eventlist[] = { I_OnPreCommand, I_OnStats, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_OnLoadModule };
        ServerInstance->Modules->Attach(eventlist, this, 8);
 }
        Implementation eventlist[] = { I_OnPreCommand, I_OnStats, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_OnLoadModule };
        ServerInstance->Modules->Attach(eventlist, this, 8);
 }
index 22035178c0ad8dd20466f320ee0a880975a9e914..a3e3148468bc7898b545ee0af6829a313e12393e 100644 (file)
@@ -125,21 +125,17 @@ class CommandGreloadmodule : public Command
 
 class ModuleGlobalLoad : public Module
 {
 
 class ModuleGlobalLoad : public Module
 {
-       CommandGloadmodule *mycommand;
-       CommandGunloadmodule *mycommand2;
-       CommandGreloadmodule *mycommand3;
+       CommandGloadmodule cmd1;
+       CommandGunloadmodule cmd2;
+       CommandGreloadmodule cmd3;
 
  public:
 
  public:
-       ModuleGlobalLoad(InspIRCd* Me) : Module(Me)
+       ModuleGlobalLoad(InspIRCd* Me)
+               : Module(Me), cmd1(Me), cmd2(Me), cmd3(Me)
        {
        {
-
-               mycommand = new CommandGloadmodule(ServerInstance);
-               mycommand2 = new CommandGunloadmodule(ServerInstance);
-               mycommand3 = new CommandGreloadmodule(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-               ServerInstance->AddCommand(mycommand2);
-               ServerInstance->AddCommand(mycommand3);
-
+               ServerInstance->AddCommand(&cmd1);
+               ServerInstance->AddCommand(&cmd2);
+               ServerInstance->AddCommand(&cmd3);
        }
 
        virtual ~ModuleGlobalLoad()
        }
 
        virtual ~ModuleGlobalLoad()
index bbdcc65aa9ed6f20bd4f3446a1cd4917e47367c8..934a4ec14f30404893a86731b7e19a0dcb26ace4 100644 (file)
@@ -45,13 +45,12 @@ class CommandGlobops : public Command
 
 class ModuleGlobops : public Module
 {
 
 class ModuleGlobops : public Module
 {
-       CommandGlobops* mycommand;
+       CommandGlobops cmd;
  public:
        ModuleGlobops(InspIRCd* Me)
  public:
        ModuleGlobops(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-               mycommand = new CommandGlobops(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                ServerInstance->SNO->EnableSnomask('g',"GLOBOPS");
 
        }
                ServerInstance->SNO->EnableSnomask('g',"GLOBOPS");
 
        }
index 0f65d7dfa0e983c75f0c3e783354717ce7cafdf6..4800ebac8328bc327e349bcf673f8a408114471e 100644 (file)
@@ -114,21 +114,19 @@ class ModuleHelpop : public Module
 {
        private:
                std::string  h_file;
 {
        private:
                std::string  h_file;
-               CommandHelpop* mycommand;
-               Helpop* ho;
+               CommandHelpop cmd;
+               Helpop ho;
 
        public:
                ModuleHelpop(InspIRCd* Me)
 
        public:
                ModuleHelpop(InspIRCd* Me)
-                       : Module(Me)
+                       : Module(Me), cmd(Me), ho(Me)
                {
                        ReadConfig();
                {
                        ReadConfig();
-                       ho = new Helpop(ServerInstance);
-                       if (!ServerInstance->Modes->AddMode(ho))
+                       if (!ServerInstance->Modes->AddMode(&ho))
                                throw ModuleException("Could not add new modes!");
                                throw ModuleException("Could not add new modes!");
-                       mycommand = new CommandHelpop(ServerInstance);
-                       ServerInstance->AddCommand(mycommand);
-               Implementation eventlist[] = { I_OnRehash, I_OnWhois };
-               ServerInstance->Modules->Attach(eventlist, this, 2);
+                       ServerInstance->AddCommand(&cmd);
+                       Implementation eventlist[] = { I_OnRehash, I_OnWhois };
+                       ServerInstance->Modules->Attach(eventlist, this, 2);
                }
 
                virtual void ReadConfig()
                }
 
                virtual void ReadConfig()
@@ -179,8 +177,7 @@ class ModuleHelpop : public Module
 
                virtual ~ModuleHelpop()
                {
 
                virtual ~ModuleHelpop()
                {
-                       ServerInstance->Modes->DelMode(ho);
-                       delete ho;
+                       ServerInstance->Modes->DelMode(&ho);
                }
 
                virtual Version GetVersion()
                }
 
                virtual Version GetVersion()
index 8ca14f1a4123d2cd21d3e6ad5106757868d32de0..96f5ef560911722ea96f2fc05a8beeea8846847c 100644 (file)
@@ -48,13 +48,11 @@ class HideChans : public ModeHandler
 class ModuleHideChans : public Module
 {
        bool AffectsOpers;
 class ModuleHideChans : public Module
 {
        bool AffectsOpers;
-       HideChans* hm;
+       HideChans hm;
  public:
  public:
-       ModuleHideChans(InspIRCd* Me) : Module(Me)
+       ModuleHideChans(InspIRCd* Me) : Module(Me), hm(Me)
        {
        {
-
-               hm = new HideChans(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(hm))
+               if (!ServerInstance->Modes->AddMode(&hm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhoisLine, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhoisLine, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -63,8 +61,7 @@ class ModuleHideChans : public Module
 
        virtual ~ModuleHideChans()
        {
 
        virtual ~ModuleHideChans()
        {
-               ServerInstance->Modes->DelMode(hm);
-               delete hm;
+               ServerInstance->Modes->DelMode(&hm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index c08a428604347dc1fe8d47d35a31be167f5d00db..c204d51e9952a4d9db3d6c0efce821f57301e091 100644 (file)
@@ -47,15 +47,13 @@ class HideOper : public ModeHandler
 
 class ModuleHideOper : public Module
 {
 
 class ModuleHideOper : public Module
 {
-
-       HideOper* hm;
+       HideOper hm;
  public:
        ModuleHideOper(InspIRCd* Me)
  public:
        ModuleHideOper(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), hm(Me)
        {
 
        {
 
-               hm = new HideOper(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(hm))
+               if (!ServerInstance->Modes->AddMode(&hm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhoisLine };
                ServerInstance->Modules->Attach(eventlist, this, 1);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhoisLine };
                ServerInstance->Modules->Attach(eventlist, this, 1);
@@ -64,8 +62,7 @@ class ModuleHideOper : public Module
 
        virtual ~ModuleHideOper()
        {
 
        virtual ~ModuleHideOper()
        {
-               ServerInstance->Modes->DelMode(hm);
-               delete hm;
+               ServerInstance->Modes->DelMode(&hm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 2e34b4f5d13b22dd83d25b7b74b86bda3084035d..c54014c8502b504b22fe576bde873fb171e7c43d 100644 (file)
@@ -130,18 +130,16 @@ class InvisibleDeOper : public ModeWatcher
 class ModuleInvisible : public Module
 {
  private:
 class ModuleInvisible : public Module
 {
  private:
-       InvisibleMode* qm;
-       InvisibleDeOper* ido;
+       InvisibleMode qm;
+       InvisibleDeOper ido;
  public:
        ModuleInvisible(InspIRCd* Me)
  public:
        ModuleInvisible(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), qm(Me), ido(Me)
        {
                conf = new ConfigReader(ServerInstance);
        {
                conf = new ConfigReader(ServerInstance);
-               qm = new InvisibleMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(qm))
+               if (!ServerInstance->Modes->AddMode(&qm))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-               ido = new InvisibleDeOper(ServerInstance);
-               if (!ServerInstance->Modes->AddModeWatcher(ido))
+               if (!ServerInstance->Modes->AddModeWatcher(&ido))
                        throw ModuleException("Could not add new mode watcher on usermode +o!");
 
                /* Yeah i know people can take this out. I'm not about to obfuscate code just to be a pain in the ass. */
                        throw ModuleException("Could not add new mode watcher on usermode +o!");
 
                /* Yeah i know people can take this out. I'm not about to obfuscate code just to be a pain in the ass. */
@@ -152,10 +150,8 @@ class ModuleInvisible : public Module
 
        virtual ~ModuleInvisible()
        {
 
        virtual ~ModuleInvisible()
        {
-               ServerInstance->Modes->DelMode(qm);
-               ServerInstance->Modes->DelModeWatcher(ido);
-               delete qm;
-               delete ido;
+               ServerInstance->Modes->DelMode(&qm);
+               ServerInstance->Modes->DelModeWatcher(&ido);
                delete conf;
        };
 
                delete conf;
        };
 
index 130ca9a430990c05b3ab63c0f8a4b8ac86ab5581..5acdf4f97f63e0872f75b34c7f6bb88780163d45 100644 (file)
@@ -39,16 +39,15 @@ class InviteException : public ListModeBase
 
 class ModuleInviteException : public Module
 {
 
 class ModuleInviteException : public Module
 {
-       InviteException* ie;
+       InviteException ie;
 public:
 public:
-       ModuleInviteException(InspIRCd* Me) : Module(Me)
+       ModuleInviteException(InspIRCd* Me) : Module(Me), ie(Me)
        {
        {
-               ie = new InviteException(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(ie))
+               if (!ServerInstance->Modes->AddMode(&ie))
                        throw ModuleException("Could not add new modes!");
                ServerInstance->Modules->PublishInterface("ChannelBanList", this);
 
                        throw ModuleException("Could not add new modes!");
                ServerInstance->Modules->PublishInterface("ChannelBanList", this);
 
-               ie->DoImplements(this);
+               ie.DoImplements(this);
                Implementation eventlist[] = { I_OnRequest, I_On005Numeric, I_OnCheckInvite };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
                Implementation eventlist[] = { I_OnRequest, I_On005Numeric, I_OnCheckInvite };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
@@ -63,7 +62,7 @@ public:
                if(chan != NULL)
                {
                        modelist* list;
                if(chan != NULL)
                {
                        modelist* list;
-                       chan->GetExt(ie->GetInfoKey(), list);
+                       chan->GetExt(ie.GetInfoKey(), list);
                        if (list)
                        {
                                std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString();
                        if (list)
                        {
                                std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString();
@@ -84,27 +83,27 @@ public:
 
        virtual const char* OnRequest(Request* request)
        {
 
        virtual const char* OnRequest(Request* request)
        {
-               return ie->DoOnRequest(request);
+               return ie.DoOnRequest(request);
        }
 
        virtual void OnCleanup(int target_type, void* item)
        {
        }
 
        virtual void OnCleanup(int target_type, void* item)
        {
-               ie->DoCleanup(target_type, item);
+               ie.DoCleanup(target_type, item);
        }
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
        }
 
        virtual void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
        {
-               ie->DoSyncChannel(chan, proto, opaque);
+               ie.DoSyncChannel(chan, proto, opaque);
        }
 
        virtual void OnChannelDelete(Channel* chan)
        {
        }
 
        virtual void OnChannelDelete(Channel* chan)
        {
-               ie->DoChannelDelete(chan);
+               ie.DoChannelDelete(chan);
        }
 
        virtual void OnRehash(User* user)
        {
        }
 
        virtual void OnRehash(User* user)
        {
-               ie->DoRehash();
+               ie.DoRehash();
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
@@ -114,8 +113,7 @@ public:
 
        ~ModuleInviteException()
        {
 
        ~ModuleInviteException()
        {
-               ServerInstance->Modes->DelMode(ie);
-               delete ie;
+               ServerInstance->Modes->DelMode(&ie);
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
                ServerInstance->Modules->UnpublishInterface("ChannelBanList", this);
        }
 };
index cb8c90e098a155b23cabb5314c0b541dcf0352e4..1af3ebe1d1a8ce7042dcd7fce99ff4df5da33875 100644 (file)
@@ -203,16 +203,15 @@ class JoinFlood : public ModeHandler
 class ModuleJoinFlood : public Module
 {
 
 class ModuleJoinFlood : public Module
 {
 
-       JoinFlood* jf;
+       JoinFlood jf;
 
  public:
 
        ModuleJoinFlood(InspIRCd* Me)
 
  public:
 
        ModuleJoinFlood(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), jf(Me)
        {
 
        {
 
-               jf = new JoinFlood(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(jf))
+               if (!ServerInstance->Modes->AddMode(&jf))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreJoin, I_OnUserJoin };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreJoin, I_OnUserJoin };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -269,8 +268,7 @@ class ModuleJoinFlood : public Module
 
        virtual ~ModuleJoinFlood()
        {
 
        virtual ~ModuleJoinFlood()
        {
-               ServerInstance->Modes->DelMode(jf);
-               delete jf;
+               ServerInstance->Modes->DelMode(&jf);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 2fb509af195c80c0662397e6d174451f70252961..f97e64258733293e74b0958360bedcbb3c71918b 100644 (file)
@@ -134,14 +134,12 @@ class CommandJumpserver : public Command
 
 class ModuleJumpServer : public Module
 {
 
 class ModuleJumpServer : public Module
 {
-       CommandJumpserver*      js;
+       CommandJumpserver js;
  public:
        ModuleJumpServer(InspIRCd* Me)
  public:
        ModuleJumpServer(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), js(Me)
        {
        {
-
-               js = new CommandJumpserver(ServerInstance);
-               ServerInstance->AddCommand(js);
+               ServerInstance->AddCommand(&js);
                Implementation eventlist[] = { I_OnUserRegister };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
                Implementation eventlist[] = { I_OnUserRegister };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
@@ -152,10 +150,11 @@ class ModuleJumpServer : public Module
 
        virtual int OnUserRegister(User* user)
        {
 
        virtual int OnUserRegister(User* user)
        {
-               if (js->port && js->redirect_new_users)
+               if (js.port && js.redirect_new_users)
                {
                {
-                       user->WriteNumeric(10, "%s %s %d :Please use this Server/Port instead", user->nick.c_str(), js->redirect_to.c_str(), js->port);
-                       ServerInstance->Users->QuitUser(user, js->reason);
+                       user->WriteNumeric(10, "%s %s %d :Please use this Server/Port instead",
+                               user->nick.c_str(), js.redirect_to.c_str(), js.port);
+                       ServerInstance->Users->QuitUser(user, js.reason);
                        return 0;
                }
                return 0;
                        return 0;
                }
                return 0;
index 9e12b4e185949382df1d24dcfdc067104449d7de..678321033f7f012fd991ae583786646c7759e148 100644 (file)
@@ -112,16 +112,14 @@ class KickRejoin : public ModeHandler
 class ModuleKickNoRejoin : public Module
 {
 
 class ModuleKickNoRejoin : public Module
 {
 
-       KickRejoin* kr;
+       KickRejoin kr;
 
 public:
 
        ModuleKickNoRejoin(InspIRCd* Me)
 
 public:
 
        ModuleKickNoRejoin(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), kr(Me)
        {
        {
-
-               kr = new KickRejoin(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(kr))
+               if (!ServerInstance->Modes->AddMode(&kr))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnCleanup, I_OnChannelDelete, I_OnUserPreJoin, I_OnUserKick };
                ServerInstance->Modules->Attach(eventlist, this, 4);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnCleanup, I_OnChannelDelete, I_OnUserPreJoin, I_OnUserKick };
                ServerInstance->Modules->Attach(eventlist, this, 4);
@@ -201,8 +199,7 @@ public:
 
        virtual ~ModuleKickNoRejoin()
        {
 
        virtual ~ModuleKickNoRejoin()
        {
-               ServerInstance->Modes->DelMode(kr);
-               delete kr;
+               ServerInstance->Modes->DelMode(&kr);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 5e6501699141e53028f95bcd9785288f99ec4657..45b213b40decbcb66316df819d7fa308a46a5de4 100644 (file)
@@ -78,26 +78,21 @@ class Knock : public SimpleChannelModeHandler
 
 class ModuleKnock : public Module
 {
 
 class ModuleKnock : public Module
 {
-       CommandKnock* mycommand;
-       Knock* kn;
+       CommandKnock cmd;
+       Knock kn;
  public:
  public:
-       ModuleKnock(InspIRCd* Me) : Module(Me)
+       ModuleKnock(InspIRCd* Me) : Module(Me), cmd(Me), kn(Me)
        {
        {
-               kn = new Knock(ServerInstance);
-
-               if (!ServerInstance->Modes->AddMode(kn))
+               if (!ServerInstance->Modes->AddMode(&kn))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-
-               mycommand = new CommandKnock(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
 
        }
 
 
        virtual ~ModuleKnock()
        {
 
        }
 
 
        virtual ~ModuleKnock()
        {
-               ServerInstance->Modes->DelMode(kn);
-               delete kn;
+               ServerInstance->Modes->DelMode(&kn);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index f25ba0553346baa4180eb912e8506880c206bcee..77dc5a219dfbc762a1f2b4dfe652dc37f365e781 100644 (file)
@@ -71,8 +71,8 @@ class ModuleLockserv : public Module
 {
 private:
        bool locked;
 {
 private:
        bool locked;
-       CommandLockserv* lockcommand;
-       CommandUnlockserv* unlockcommand;
+       CommandLockserv lockcommand;
+       CommandUnlockserv unlockcommand;
 
        virtual void ResetLocked()
        {
 
        virtual void ResetLocked()
        {
@@ -80,14 +80,11 @@ private:
        }
 
 public:
        }
 
 public:
-       ModuleLockserv(InspIRCd* Me) : Module(Me)
+       ModuleLockserv(InspIRCd* Me) : Module(Me), lockcommand(Me, locked), unlockcommand(Me, locked)
        {
                ResetLocked();
        {
                ResetLocked();
-               lockcommand = new CommandLockserv(ServerInstance, locked);
-               ServerInstance->AddCommand(lockcommand);
-
-               unlockcommand = new CommandUnlockserv(ServerInstance, locked);
-               ServerInstance->AddCommand(unlockcommand);
+               ServerInstance->AddCommand(&lockcommand);
+               ServerInstance->AddCommand(&unlockcommand);
                Implementation eventlist[] = { I_OnUserRegister, I_OnRehash, I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
                Implementation eventlist[] = { I_OnUserRegister, I_OnRehash, I_OnCheckReady };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
index 637efa7653c52721fc6f9636dfa2375e9cbbd9aa..3c3b9a39b4f94c077094bd8ce6167b05c6868ea7 100644 (file)
@@ -22,7 +22,6 @@ class ModuleMapHide : public Module
        ModuleMapHide(InspIRCd* Me)
                : Module(Me)
        {
        ModuleMapHide(InspIRCd* Me)
                : Module(Me)
        {
-               // Create a new command
                ServerInstance->Modules->Attach(I_OnPreCommand, this);
                ServerInstance->Modules->Attach(I_OnRehash, this);
                OnRehash(NULL);
                ServerInstance->Modules->Attach(I_OnPreCommand, this);
                ServerInstance->Modules->Attach(I_OnRehash, this);
                OnRehash(NULL);
index 2342870b8e55cde20be5e190cd7d65f99c35bd65..75f88232ba163b31a06076c1e501bbe19eea9e92 100644 (file)
@@ -198,17 +198,14 @@ class MsgFlood : public ModeHandler
 
 class ModuleMsgFlood : public Module
 {
 
 class ModuleMsgFlood : public Module
 {
-
-       MsgFlood* mf;
+       MsgFlood mf;
 
  public:
 
        ModuleMsgFlood(InspIRCd* Me)
 
  public:
 
        ModuleMsgFlood(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), mf(Me)
        {
        {
-
-               mf = new MsgFlood(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(mf))
+               if (!ServerInstance->Modes->AddMode(&mf))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreNotice, I_OnUserPreMessage };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreNotice, I_OnUserPreMessage };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -284,8 +281,7 @@ class ModuleMsgFlood : public Module
 
        virtual ~ModuleMsgFlood()
        {
 
        virtual ~ModuleMsgFlood()
        {
-               ServerInstance->Modes->DelMode(mf);
-               delete mf;
+               ServerInstance->Modes->DelMode(&mf);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 97055c225b8561424b5dbee76666ac0fefd1fc53..1ed30f767d1f69fe9e54d7a36639f3c48be7171b 100644 (file)
@@ -206,16 +206,14 @@ class NickFlood : public ModeHandler
 
 class ModuleNickFlood : public Module
 {
 
 class ModuleNickFlood : public Module
 {
-       NickFlood* jf;
+       NickFlood jf;
 
  public:
 
        ModuleNickFlood(InspIRCd* Me)
 
  public:
 
        ModuleNickFlood(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), jf(Me)
        {
        {
-
-               jf = new NickFlood(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(jf))
+               if (!ServerInstance->Modes->AddMode(&jf))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreNick, I_OnUserPostNick };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnChannelDelete, I_OnUserPreNick, I_OnUserPostNick };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -296,8 +294,7 @@ class ModuleNickFlood : public Module
 
        virtual ~ModuleNickFlood()
        {
 
        virtual ~ModuleNickFlood()
        {
-               ServerInstance->Modes->DelMode(jf);
-               delete jf;
+               ServerInstance->Modes->DelMode(&jf);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index fe669fdcb41a5f068f5e277d851a852b73e88e97..cc6691717c9cd632e925d1f8c9648e9beb74b7b0 100644 (file)
@@ -145,18 +145,15 @@ class CommandNickunlock : public Command
 
 class ModuleNickLock : public Module
 {
 
 class ModuleNickLock : public Module
 {
-       CommandNicklock*        cmd1;
-       CommandNickunlock*      cmd2;
+       CommandNicklock cmd1;
+       CommandNickunlock       cmd2;
        char* n;
  public:
        ModuleNickLock(InspIRCd* Me)
        char* n;
  public:
        ModuleNickLock(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd1(Me), cmd2(Me)
        {
        {
-
-               cmd1 = new CommandNicklock(ServerInstance);
-               cmd2 = new CommandNickunlock(ServerInstance);
-               ServerInstance->AddCommand(cmd1);
-               ServerInstance->AddCommand(cmd2);
+               ServerInstance->AddCommand(&cmd1);
+               ServerInstance->AddCommand(&cmd2);
                Implementation eventlist[] = { I_OnUserPreNick, I_OnUserQuit, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
                Implementation eventlist[] = { I_OnUserPreNick, I_OnUserQuit, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 3);
        }
index 2f2b3d01170021fd706dbe1b764f72e1a7387b1c..b7d9295a10c9088068a5199d899ddbc1685f4316 100644 (file)
@@ -46,16 +46,14 @@ class NoCTCP : public ModeHandler
 class ModuleNoCTCP : public Module
 {
 
 class ModuleNoCTCP : public Module
 {
 
-       NoCTCP* nc;
+       NoCTCP nc;
 
  public:
 
        ModuleNoCTCP(InspIRCd* Me)
 
  public:
 
        ModuleNoCTCP(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), nc(Me)
        {
        {
-
-               nc = new NoCTCP(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(nc))
+               if (!ServerInstance->Modes->AddMode(&nc))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -63,8 +61,7 @@ class ModuleNoCTCP : public Module
 
        virtual ~ModuleNoCTCP()
        {
 
        virtual ~ModuleNoCTCP()
        {
-               ServerInstance->Modes->DelMode(nc);
-               delete nc;
+               ServerInstance->Modes->DelMode(&nc);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 61ab868a5a08114d80202a84cc34960e90828fe0..ce43e576fc1a585efaef5af028fb31d63d4636e6 100644 (file)
@@ -23,14 +23,13 @@ class NoKicks : public SimpleChannelModeHandler
 
 class ModuleNoKicks : public Module
 {
 
 class ModuleNoKicks : public Module
 {
-       NoKicks* nk;
+       NoKicks nk;
 
  public:
        ModuleNoKicks(InspIRCd* Me)
 
  public:
        ModuleNoKicks(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), nk(Me)
        {
        {
-               nk = new NoKicks(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(nk))
+               if (!ServerInstance->Modes->AddMode(&nk))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnAccessCheck, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnAccessCheck, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -65,8 +64,7 @@ class ModuleNoKicks : public Module
 
        virtual ~ModuleNoKicks()
        {
 
        virtual ~ModuleNoKicks()
        {
-               ServerInstance->Modes->DelMode(nk);
-               delete nk;
+               ServerInstance->Modes->DelMode(&nk);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 08baef5dfcb6ad4edd7fe02eff208df036924278..b3b739807dc03054e0a9b874ec37df19dd975492 100644 (file)
@@ -45,21 +45,18 @@ class NoNicks : public ModeHandler
 
 class ModuleNoNickChange : public Module
 {
 
 class ModuleNoNickChange : public Module
 {
-       NoNicks* nn;
+       NoNicks nn;
  public:
  public:
-       ModuleNoNickChange(InspIRCd* Me) : Module(Me)
+       ModuleNoNickChange(InspIRCd* Me) : Module(Me), nn(Me)
        {
        {
-
-               nn = new NoNicks(ServerInstance);
-               ServerInstance->Modes->AddMode(nn);
+               ServerInstance->Modes->AddMode(&nn);
                Implementation eventlist[] = { I_OnUserPreNick, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
        }
 
        virtual ~ModuleNoNickChange()
        {
                Implementation eventlist[] = { I_OnUserPreNick, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
        }
 
        virtual ~ModuleNoNickChange()
        {
-               ServerInstance->Modes->DelMode(nn);
-               delete nn;
+               ServerInstance->Modes->DelMode(&nn);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index a1092ab7ced6cbe73e57aa3405524828695297f4..854de29017aed1ef6fa06e59ec8f1909ed5dcebc 100644 (file)
@@ -23,16 +23,13 @@ class NoNotice : public SimpleChannelModeHandler
 
 class ModuleNoNotice : public Module
 {
 
 class ModuleNoNotice : public Module
 {
-
-       NoNotice* nt;
+       NoNotice nt;
  public:
 
        ModuleNoNotice(InspIRCd* Me)
  public:
 
        ModuleNoNotice(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), nt(Me)
        {
        {
-
-               nt = new NoNotice(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(nt))
+               if (!ServerInstance->Modes->AddMode(&nt))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -72,8 +69,7 @@ class ModuleNoNotice : public Module
 
        virtual ~ModuleNoNotice()
        {
 
        virtual ~ModuleNoNotice()
        {
-               ServerInstance->Modes->DelMode(nt);
-               delete nt;
+               ServerInstance->Modes->DelMode(&nt);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 50aa0aa874438cffdb9a5f1a886ecd721713aabe..8723f6ca04d15e5723f5b220f8aa7946c98bf3b3 100644 (file)
@@ -47,14 +47,12 @@ class OperChans : public ModeHandler
 class ModuleOperChans : public Module
 {
 
 class ModuleOperChans : public Module
 {
 
-       OperChans* oc;
+       OperChans oc;
  public:
        ModuleOperChans(InspIRCd* Me)
  public:
        ModuleOperChans(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), oc(Me)
        {
        {
-
-               oc = new OperChans(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(oc))
+               if (!ServerInstance->Modes->AddMode(&oc))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnCheckBan, I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnCheckBan, I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 2);
@@ -81,8 +79,7 @@ class ModuleOperChans : public Module
 
        virtual ~ModuleOperChans()
        {
 
        virtual ~ModuleOperChans()
        {
-               ServerInstance->Modes->DelMode(oc);
-               delete oc;
+               ServerInstance->Modes->DelMode(&oc);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index fcb5f1a695f7e6698738a9ea83a0575fc18e8546..9caa73d9101f167738fa847da73d1950deb20b7b 100644 (file)
@@ -58,7 +58,7 @@ class CommandOpermotd : public Command
 
 class ModuleOpermotd : public Module
 {
 
 class ModuleOpermotd : public Module
 {
-       CommandOpermotd* mycommand;
+       CommandOpermotd cmd;
        bool onoper;
  public:
 
        bool onoper;
  public:
 
@@ -78,11 +78,10 @@ class ModuleOpermotd : public Module
        }
 
        ModuleOpermotd(InspIRCd* Me)
        }
 
        ModuleOpermotd(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
                opermotd = NULL;
        {
                opermotd = NULL;
-               mycommand = new CommandOpermotd(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                opermotd = new FileReader(ServerInstance);
                LoadOperMOTD();
                Implementation eventlist[] = { I_OnRehash, I_OnOper };
                opermotd = new FileReader(ServerInstance);
                LoadOperMOTD();
                Implementation eventlist[] = { I_OnRehash, I_OnOper };
index 52c8f241cb77382df7fdd016a053f0f8d4479c40..e91bedd70ce4f08f63ad707535570ee55c9ad27f 100644 (file)
@@ -71,7 +71,7 @@ class CommandMkpasswd : public Command
 class ModuleOperHash : public Module
 {
 
 class ModuleOperHash : public Module
 {
 
-       CommandMkpasswd* mycommand;
+       CommandMkpasswd cmd;
        hashymodules hashers; /* List of modules which implement HashRequest */
        std::deque<std::string> names; /* Module names which implement HashRequest */
 
        hashymodules hashers; /* List of modules which implement HashRequest */
        std::deque<std::string> names; /* Module names which implement HashRequest */
 
@@ -79,7 +79,7 @@ class ModuleOperHash : public Module
  public:
 
        ModuleOperHash(InspIRCd* Me)
  public:
 
        ModuleOperHash(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me, this, hashers, names)
        {
                diduseiface = false;
 
        {
                diduseiface = false;
 
@@ -109,8 +109,7 @@ class ModuleOperHash : public Module
                        diduseiface = true;
                }
 
                        diduseiface = true;
                }
 
-               mycommand = new CommandMkpasswd(ServerInstance, this, hashers, names);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnPassCompare, I_OnLoadModule };
                ServerInstance->Modules->Attach(eventlist, this, 2);
        }
                Implementation eventlist[] = { I_OnPassCompare, I_OnLoadModule };
                ServerInstance->Modules->Attach(eventlist, this, 2);
        }
index ff269934e6fd111b434ca8d7caaa9fc14d006531..08a48443e0160817fea14af89b0b2a1f9bb77a68 100644 (file)
@@ -77,17 +77,13 @@ class PermChannel : public ModeHandler
 
 class ModulePermanentChannels : public Module
 {
 
 class ModulePermanentChannels : public Module
 {
-       PermChannel *p;
+       PermChannel p;
 public:
 
 public:
 
-       ModulePermanentChannels(InspIRCd* Me) : Module(Me)
+       ModulePermanentChannels(InspIRCd* Me) : Module(Me), p(Me)
        {
        {
-               p = new PermChannel(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(p))
-               {
-                       delete p;
+               if (!ServerInstance->Modes->AddMode(&p))
                        throw ModuleException("Could not add new modes!");
                        throw ModuleException("Could not add new modes!");
-               }
                Implementation eventlist[] = { I_OnChannelPreDelete };
                ServerInstance->Modules->Attach(eventlist, this, 1);
 
                Implementation eventlist[] = { I_OnChannelPreDelete };
                ServerInstance->Modules->Attach(eventlist, this, 1);
 
@@ -96,8 +92,7 @@ public:
 
        virtual ~ModulePermanentChannels()
        {
 
        virtual ~ModulePermanentChannels()
        {
-               ServerInstance->Modes->DelMode(p);
-               delete p;
+               ServerInstance->Modes->DelMode(&p);
        }
 
        virtual void OnRehash(User *user)
        }
 
        virtual void OnRehash(User *user)
index 988d82a85ea38528a0b2a4fe0d4853472971bb3d..21cb2257dc8358ba0bfbe2b11dfeb383bd3e6703 100644 (file)
@@ -55,11 +55,11 @@ class CommandRandquote : public Command
 class ModuleRandQuote : public Module
 {
  private:
 class ModuleRandQuote : public Module
 {
  private:
-       CommandRandquote* mycommand;
+       CommandRandquote cmd;
        ConfigReader *conf;
  public:
        ModuleRandQuote(InspIRCd* Me)
        ConfigReader *conf;
  public:
        ModuleRandQuote(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
 
                conf = new ConfigReader(ServerInstance);
        {
 
                conf = new ConfigReader(ServerInstance);
@@ -70,8 +70,6 @@ class ModuleRandQuote : public Module
                prefix = conf->ReadValue("randquote","prefix",0);
                suffix = conf->ReadValue("randquote","suffix",0);
 
                prefix = conf->ReadValue("randquote","prefix",0);
                suffix = conf->ReadValue("randquote","suffix",0);
 
-               mycommand = NULL;
-
                if (q_file.empty())
                {
                        throw ModuleException("m_randquote: Quotefile not specified - Please check your config.");
                if (q_file.empty())
                {
                        throw ModuleException("m_randquote: Quotefile not specified - Please check your config.");
@@ -85,8 +83,7 @@ class ModuleRandQuote : public Module
                else
                {
                        /* Hidden Command -- Mode clients assume /quote sends raw data to an IRCd >:D */
                else
                {
                        /* Hidden Command -- Mode clients assume /quote sends raw data to an IRCd >:D */
-                       mycommand = new CommandRandquote(ServerInstance);
-                       ServerInstance->AddCommand(mycommand);
+                       ServerInstance->AddCommand(&cmd);
                }
                Implementation eventlist[] = { I_OnUserConnect };
                ServerInstance->Modules->Attach(eventlist, this, 1);
                }
                Implementation eventlist[] = { I_OnUserConnect };
                ServerInstance->Modules->Attach(eventlist, this, 1);
@@ -106,8 +103,7 @@ class ModuleRandQuote : public Module
 
        virtual void OnUserConnect(User* user)
        {
 
        virtual void OnUserConnect(User* user)
        {
-               if (mycommand)
-                       mycommand->Handle(std::vector<std::string>(), user);
+               cmd.Handle(std::vector<std::string>(), user);
        }
 };
 
        }
 };
 
index f778b5fef77e402cf4ea137977e0a5b9d4f9d585..1a5a48b00607578722ffdacc1286f1aad6cf6165 100644 (file)
@@ -85,16 +85,15 @@ class Redirect : public ModeHandler
 class ModuleRedirect : public Module
 {
 
 class ModuleRedirect : public Module
 {
 
-       Redirect* re;
+       Redirect re;
 
  public:
 
        ModuleRedirect(InspIRCd* Me)
 
  public:
 
        ModuleRedirect(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), re(Me)
        {
 
        {
 
-               re = new Redirect(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(re))
+               if (!ServerInstance->Modes->AddMode(&re))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 1);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 1);
@@ -131,8 +130,7 @@ class ModuleRedirect : public Module
 
        virtual ~ModuleRedirect()
        {
 
        virtual ~ModuleRedirect()
        {
-               ServerInstance->Modes->DelMode(re);
-               delete re;
+               ServerInstance->Modes->DelMode(&re);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 6e5eaae46770eaa764ac26a7128039e9d4d7db31..c86565b5f169661496004b8f41420f67b87e12db 100644 (file)
@@ -238,19 +238,17 @@ class CommandFpart : public Command, public RemoveBase
 
 class ModuleRemove : public Module
 {
 
 class ModuleRemove : public Module
 {
-       CommandRemove* mycommand;
-       CommandFpart* mycommand2;
+       CommandRemove cmd1;
+       CommandFpart cmd2;
        bool supportnokicks;
 
 
  public:
        ModuleRemove(InspIRCd* Me)
        bool supportnokicks;
 
 
  public:
        ModuleRemove(InspIRCd* Me)
-       : Module(Me)
+       : Module(Me), cmd1(Me, supportnokicks), cmd2(Me, supportnokicks)
        {
        {
-               mycommand = new CommandRemove(ServerInstance, supportnokicks);
-               mycommand2 = new CommandFpart(ServerInstance, supportnokicks);
-               ServerInstance->AddCommand(mycommand);
-               ServerInstance->AddCommand(mycommand2);
+               ServerInstance->AddCommand(&cmd1);
+               ServerInstance->AddCommand(&cmd2);
                OnRehash(NULL);
                Implementation eventlist[] = { I_On005Numeric, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                OnRehash(NULL);
                Implementation eventlist[] = { I_On005Numeric, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 2);
index 9d090ec2ed45e1f08dd59e64bd464d5801930346..824d6229a9258df687e2685b260fe0fb082c64c9 100644 (file)
@@ -186,25 +186,21 @@ class CommandRLine : public Command
 class ModuleRLine : public Module
 {
  private:
 class ModuleRLine : public Module
 {
  private:
-       CommandRLine *r;
-       RLineFactory *f;
+       CommandRLine r;
+       RLineFactory f;
        bool MatchOnNickChange;
        std::string RegexEngine;
 
  public:
        bool MatchOnNickChange;
        std::string RegexEngine;
 
  public:
-       ModuleRLine(InspIRCd* Me) : Module(Me)
+       ModuleRLine(InspIRCd* Me) : Module(Me), r(Me), f(Me)
        {
                mymodule = this;
                OnRehash(NULL);
 
                Me->Modules->UseInterface("RegularExpression");
 
        {
                mymodule = this;
                OnRehash(NULL);
 
                Me->Modules->UseInterface("RegularExpression");
 
-               // Create a new command
-               r = new CommandRLine(ServerInstance);
-               ServerInstance->AddCommand(r);
-
-               f = new RLineFactory(ServerInstance);
-               ServerInstance->XLines->RegisterFactory(f);
+               ServerInstance->AddCommand(&r);
+               ServerInstance->XLines->RegisterFactory(&f);
 
                Implementation eventlist[] = { I_OnUserConnect, I_OnRehash, I_OnUserPostNick, I_OnLoadModule, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 5);
 
                Implementation eventlist[] = { I_OnUserConnect, I_OnRehash, I_OnUserPostNick, I_OnLoadModule, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 5);
@@ -215,7 +211,7 @@ class ModuleRLine : public Module
        {
                ServerInstance->Modules->DoneWithInterface("RegularExpression");
                ServerInstance->XLines->DelAll("R");
        {
                ServerInstance->Modules->DoneWithInterface("RegularExpression");
                ServerInstance->XLines->DelAll("R");
-               ServerInstance->XLines->UnregisterFactory(f);
+               ServerInstance->XLines->UnregisterFactory(&f);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index cada9890ca04751f9b1b6f1c5b362f527b68209b..8fad7bc42d650c90353a411b6a7421fdef71b6c6 100644 (file)
@@ -88,15 +88,12 @@ class CommandSajoin : public Command
 
 class ModuleSajoin : public Module
 {
 
 class ModuleSajoin : public Module
 {
-       CommandSajoin*  mycommand;
+       CommandSajoin cmd;
  public:
        ModuleSajoin(InspIRCd* Me)
  public:
        ModuleSajoin(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSajoin(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSajoin()
        }
 
        virtual ~ModuleSajoin()
index d171abe57cfa037ff6d4f295cf5f65b017959374..feceeee993f8cd6b9aa429a94ec2f29e7e688017 100644 (file)
@@ -88,15 +88,12 @@ class CommandSakick : public Command
 
 class ModuleSakick : public Module
 {
 
 class ModuleSakick : public Module
 {
-       CommandSakick*  mycommand;
+       CommandSakick cmd;
  public:
        ModuleSakick(InspIRCd* Me)
  public:
        ModuleSakick(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSakick(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSakick()
        }
 
        virtual ~ModuleSakick()
index 9624ee0534ef0438d5d3d7205a442201f8133c8c..0011e7076a7e30dbbeb4ec9630fb797f2ef60679 100644 (file)
@@ -54,15 +54,12 @@ class CommandSamode : public Command
 
 class ModuleSaMode : public Module
 {
 
 class ModuleSaMode : public Module
 {
-       CommandSamode*  mycommand;
+       CommandSamode cmd;
  public:
        ModuleSaMode(InspIRCd* Me)
  public:
        ModuleSaMode(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSamode(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSaMode()
        }
 
        virtual ~ModuleSaMode()
index e7496850051f955f42d03c495e37f3d280016c50..180e4ba810c043b29bbf15586731993e8130aa9d 100644 (file)
@@ -80,15 +80,12 @@ class CommandSanick : public Command
 
 class ModuleSanick : public Module
 {
 
 class ModuleSanick : public Module
 {
-       CommandSanick*  mycommand;
+       CommandSanick cmd;
  public:
        ModuleSanick(InspIRCd* Me)
  public:
        ModuleSanick(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSanick(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSanick()
        }
 
        virtual ~ModuleSanick()
index 85c1a8606eddd389c343fadeb22c489cfe4f7279..ba5387901b6087ce0ec02926aa78c7a8ced410b0 100644 (file)
@@ -88,15 +88,12 @@ class CommandSapart : public Command
 
 class ModuleSapart : public Module
 {
 
 class ModuleSapart : public Module
 {
-       CommandSapart*  mycommand;
+       CommandSapart cmd;
  public:
        ModuleSapart(InspIRCd* Me)
  public:
        ModuleSapart(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSapart(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSapart()
        }
 
        virtual ~ModuleSapart()
index ff35b31d7105429a0aa02161d981b3cc230118e9..8bd1664c619ab0b32864d280af1840fee0aac37b 100644 (file)
@@ -58,15 +58,12 @@ class CommandSaquit : public Command
 
 class ModuleSaquit : public Module
 {
 
 class ModuleSaquit : public Module
 {
-       CommandSaquit*  mycommand;
+       CommandSaquit cmd;
  public:
        ModuleSaquit(InspIRCd* Me)
  public:
        ModuleSaquit(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSaquit(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSaquit()
        }
 
        virtual ~ModuleSaquit()
index 1777fbc152160d6d58fcab1f85fcaeb812aa2ce2..7867c245d3520329943a4cf2b3ac84f1db1a0201 100644 (file)
@@ -186,17 +186,16 @@ class CommandAuthenticate : public Command
 
 class ModuleSASL : public Module
 {
 
 class ModuleSASL : public Module
 {
-       CommandAuthenticate* sasl;
+       CommandAuthenticate sasl;
  public:
 
        ModuleSASL(InspIRCd* Me)
  public:
 
        ModuleSASL(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), sasl(Me, this)
        {
                Implementation eventlist[] = { I_OnEvent, I_OnUserRegister, I_OnPostConnect, I_OnUserDisconnect, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 5);
 
        {
                Implementation eventlist[] = { I_OnEvent, I_OnUserRegister, I_OnPostConnect, I_OnUserDisconnect, I_OnCleanup };
                ServerInstance->Modules->Attach(eventlist, this, 5);
 
-               sasl = new CommandAuthenticate(ServerInstance, this);
-               ServerInstance->AddCommand(sasl);
+               ServerInstance->AddCommand(&sasl);
 
                if (!ServerInstance->Modules->Find("m_services_account.so") || !ServerInstance->Modules->Find("m_cap.so"))
                        ServerInstance->Logs->Log("m_sasl", DEFAULT, "WARNING: m_services_account.so and m_cap.so are not loaded! m_sasl.so will NOT function correctly until these two modules are loaded!");
 
                if (!ServerInstance->Modules->Find("m_services_account.so") || !ServerInstance->Modules->Find("m_cap.so"))
                        ServerInstance->Logs->Log("m_sasl", DEFAULT, "WARNING: m_services_account.so and m_cap.so are not loaded! m_sasl.so will NOT function correctly until these two modules are loaded!");
index 67756158a0a0cdf48a4fa74c2caf9b1244194564..7414058df495ee269b563541b40c0eb8f5143bbe 100644 (file)
@@ -55,13 +55,12 @@ class CommandSATopic : public Command
 
 class ModuleSATopic : public Module
 {
 
 class ModuleSATopic : public Module
 {
-       CommandSATopic* mycommand;
+       CommandSATopic cmd;
  public:
        ModuleSATopic(InspIRCd* Me)
  public:
        ModuleSATopic(InspIRCd* Me)
-       : Module(Me)
+       : Module(Me), cmd(Me)
        {
        {
-               mycommand = new CommandSATopic(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSATopic()
        }
 
        virtual ~ModuleSATopic()
index 7aebaa1b986bef896210c56ee26eeef6eb570129..d6cf0b1e772960b6a77fa3ef7d122e2f357eb1dc 100644 (file)
@@ -99,21 +99,19 @@ class AChannel_M : public SimpleChannelModeHandler
 
 class ModuleServicesAccount : public Module
 {
 
 class ModuleServicesAccount : public Module
 {
-       AChannel_R* m1;
-       AChannel_M* m2;
-       AUser_R* m3;
-       Channel_r *m4;
-       User_r *m5;
+       AChannel_R m1;
+       AChannel_M m2;
+       AUser_R m3;
+       Channel_r m4;
+       User_r m5;
  public:
  public:
-       ModuleServicesAccount(InspIRCd* Me) : Module(Me)
+       ModuleServicesAccount(InspIRCd* Me) : Module(Me),
+               m1(Me), m2(Me), m3(Me), m4(Me), m5(Me)
        {
        {
-               m1 = new AChannel_R(ServerInstance);
-               m2 = new AChannel_M(ServerInstance);
-               m3 = new AUser_R(ServerInstance);
-               m4 = new Channel_r(ServerInstance);
-               m5 = new User_r(ServerInstance);
 
 
-               if (!ServerInstance->Modes->AddMode(m1) || !ServerInstance->Modes->AddMode(m2) || !ServerInstance->Modes->AddMode(m3) || !ServerInstance->Modes->AddMode(m4) || !ServerInstance->Modes->AddMode(m5))
+               if (!ServerInstance->Modes->AddMode(&m1) || !ServerInstance->Modes->AddMode(&m2) ||
+                       !ServerInstance->Modes->AddMode(&m3) || !ServerInstance->Modes->AddMode(&m4) ||
+                       !ServerInstance->Modes->AddMode(&m5))
                        throw ModuleException("Some other module has claimed our modes!");
 
                Implementation eventlist[] = { I_OnWhois, I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserPreJoin, I_OnCheckBan,
                        throw ModuleException("Some other module has claimed our modes!");
 
                Implementation eventlist[] = { I_OnWhois, I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserPreJoin, I_OnCheckBan,
@@ -347,16 +345,11 @@ class ModuleServicesAccount : public Module
 
        virtual ~ModuleServicesAccount()
        {
 
        virtual ~ModuleServicesAccount()
        {
-               ServerInstance->Modes->DelMode(m1);
-               ServerInstance->Modes->DelMode(m2);
-               ServerInstance->Modes->DelMode(m3);
-               ServerInstance->Modes->DelMode(m4);
-               ServerInstance->Modes->DelMode(m5);
-               delete m1;
-               delete m2;
-               delete m3;
-               delete m4;
-               delete m5;
+               ServerInstance->Modes->DelMode(&m1);
+               ServerInstance->Modes->DelMode(&m2);
+               ServerInstance->Modes->DelMode(&m3);
+               ServerInstance->Modes->DelMode(&m4);
+               ServerInstance->Modes->DelMode(&m5);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 7c4aef2899832ff26aba0ca6cd4eab2c0c21a814..22aad400e11e961bc40877463a84432d8308f9c7 100644 (file)
@@ -41,14 +41,12 @@ class ServProtectMode : public ModeHandler
 class ModuleServProtectMode : public Module
 {
 
 class ModuleServProtectMode : public Module
 {
 
-       ServProtectMode* bm;
+       ServProtectMode bm;
  public:
        ModuleServProtectMode(InspIRCd* Me)
  public:
        ModuleServProtectMode(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), bm(Me)
        {
        {
-
-               bm = new ServProtectMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(bm))
+               if (!ServerInstance->Modes->AddMode(&bm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhois, I_OnKill, I_OnWhoisLine, I_OnRawMode, I_OnUserPreKick };
                ServerInstance->Modules->Attach(eventlist, this, 5);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnWhois, I_OnKill, I_OnWhoisLine, I_OnRawMode, I_OnUserPreKick };
                ServerInstance->Modules->Attach(eventlist, this, 5);
@@ -57,8 +55,7 @@ class ModuleServProtectMode : public Module
 
        virtual ~ModuleServProtectMode()
        {
 
        virtual ~ModuleServProtectMode()
        {
-               ServerInstance->Modes->DelMode(bm);
-               delete bm;
+               ServerInstance->Modes->DelMode(&bm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index f6e38c2136bc6e515d5501caeeb90be4a284c2a8..a925e75c3d734a65001b823b3351f07ca2cc22b4 100644 (file)
@@ -64,15 +64,14 @@ class CommandSethost : public Command
 
 class ModuleSetHost : public Module
 {
 
 class ModuleSetHost : public Module
 {
-       CommandSethost* mycommand;
+       CommandSethost cmd;
        char hostmap[256];
  public:
        ModuleSetHost(InspIRCd* Me)
        char hostmap[256];
  public:
        ModuleSetHost(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me, hostmap)
        {
                OnRehash(NULL);
        {
                OnRehash(NULL);
-               mycommand = new CommandSethost(ServerInstance, hostmap);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
                Implementation eventlist[] = { I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
index 805ca4eb09f263b9c0de071ab8db0ae0a02a5cc0..7823b041b86db4c898be6e40c80c3408b7222da1 100644 (file)
@@ -57,15 +57,12 @@ class CommandSetident : public Command
 
 class ModuleSetIdent : public Module
 {
 
 class ModuleSetIdent : public Module
 {
-       CommandSetident*        mycommand;
+       CommandSetident cmd;
 
  public:
 
  public:
-       ModuleSetIdent(InspIRCd* Me) : Module(Me)
+       ModuleSetIdent(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSetident(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSetIdent()
        }
 
        virtual ~ModuleSetIdent()
index 4001e5ee9120e8d50a37a287f44807435dfb51b0..468102675b4f37158619caaed37a0b4a93105158 100644 (file)
@@ -49,15 +49,12 @@ class CommandSetidle : public Command
 
 class ModuleSetIdle : public Module
 {
 
 class ModuleSetIdle : public Module
 {
-       CommandSetidle* mycommand;
+       CommandSetidle cmd;
  public:
        ModuleSetIdle(InspIRCd* Me)
  public:
        ModuleSetIdle(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSetidle(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSetIdle()
        }
 
        virtual ~ModuleSetIdle()
index b70939ca2b4a43f2efa770d80a27af7758a25409..00c76c848ee1acb67a156363eb14b383b4175993 100644 (file)
@@ -54,15 +54,12 @@ class CommandSetname : public Command
 
 class ModuleSetName : public Module
 {
 
 class ModuleSetName : public Module
 {
-       CommandSetname* mycommand;
+       CommandSetname cmd;
  public:
        ModuleSetName(InspIRCd* Me)
  public:
        ModuleSetName(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandSetname(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleSetName()
        }
 
        virtual ~ModuleSetName()
index 939807bd3f663ee8253cf0e21be16dbb7d51f184..f4532ecd1b5befc0a3b0bb198779aa4090a1ef76 100644 (file)
@@ -174,20 +174,17 @@ class CommandShun : public Command
 
 class ModuleShun : public Module
 {
 
 class ModuleShun : public Module
 {
-       CommandShun* mycommand;
-       ShunFactory *f;
+       CommandShun cmd;
+       ShunFactory f;
        std::set<std::string> ShunEnabledCommands;
        bool NotifyOfShun;
        bool affectopers;
 
  public:
        std::set<std::string> ShunEnabledCommands;
        bool NotifyOfShun;
        bool affectopers;
 
  public:
-       ModuleShun(InspIRCd* Me) : Module(Me)
+       ModuleShun(InspIRCd* Me) : Module(Me), cmd(Me), f(Me)
        {
        {
-               f = new ShunFactory(ServerInstance);
-               ServerInstance->XLines->RegisterFactory(f);
-
-               mycommand = new CommandShun(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->XLines->RegisterFactory(&f);
+               ServerInstance->AddCommand(&cmd);
 
                Implementation eventlist[] = { I_OnStats, I_OnPreCommand, I_OnUserConnect, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 4);
 
                Implementation eventlist[] = { I_OnStats, I_OnPreCommand, I_OnUserConnect, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, 4);
@@ -197,7 +194,7 @@ class ModuleShun : public Module
        virtual ~ModuleShun()
        {
                ServerInstance->XLines->DelAll("SHUN");
        virtual ~ModuleShun()
        {
                ServerInstance->XLines->DelAll("SHUN");
-               ServerInstance->XLines->UnregisterFactory(f);
+               ServerInstance->XLines->UnregisterFactory(&f);
        }
 
        virtual int OnStats(char symbol, User* user, string_list& out)
        }
 
        virtual int OnStats(char symbol, User* user, string_list& out)
index 9b5f393e57b838cf99a32b1a8c41c9145b9f5fd3..0786c4da4fa60e274b3890fed69ff14a94a190e3 100644 (file)
@@ -266,19 +266,17 @@ class CommandSilence : public Command
 
 class ModuleSilence : public Module
 {
 
 class ModuleSilence : public Module
 {
-       CommandSilence* cmdsilence;
-       CommandSVSSilence *cmdsvssilence;
        unsigned int maxsilence;
        unsigned int maxsilence;
+       CommandSilence cmdsilence;
+       CommandSVSSilence cmdsvssilence;
  public:
 
        ModuleSilence(InspIRCd* Me)
  public:
 
        ModuleSilence(InspIRCd* Me)
-               : Module(Me), maxsilence(32)
+               : Module(Me), maxsilence(32), cmdsilence(Me, maxsilence), cmdsvssilence(Me)
        {
                OnRehash(NULL);
        {
                OnRehash(NULL);
-               cmdsilence = new CommandSilence(ServerInstance,maxsilence);
-               cmdsvssilence = new CommandSVSSilence(ServerInstance);
-               ServerInstance->AddCommand(cmdsilence);
-               ServerInstance->AddCommand(cmdsvssilence);
+               ServerInstance->AddCommand(&cmdsilence);
+               ServerInstance->AddCommand(&cmdsvssilence);
 
                Implementation eventlist[] = { I_OnRehash, I_OnBuildExemptList, I_OnUserQuit, I_On005Numeric, I_OnUserPreNotice, I_OnUserPreMessage, I_OnUserPreInvite };
                ServerInstance->Modules->Attach(eventlist, this, 7);
 
                Implementation eventlist[] = { I_OnRehash, I_OnBuildExemptList, I_OnUserQuit, I_On005Numeric, I_OnUserPreNotice, I_OnUserPreMessage, I_OnUserPreInvite };
                ServerInstance->Modules->Attach(eventlist, this, 7);
index 9e8fa7035636ddb46f81e64eddf87ef55c1e68c9..28473fdf9930edc25b81ce874f445c66ff2f3d61 100644 (file)
@@ -921,6 +921,9 @@ ModuleSpanningTree::~ModuleSpanningTree()
        /* This will also free the listeners */
        delete Utils;
 
        /* This will also free the listeners */
        delete Utils;
 
+       delete command_rconnect;
+       delete command_rsquit;
+
        ServerInstance->Timers->DelTimer(RefreshTimer);
 
        ServerInstance->Modules->DoneWithInterface("BufferedSocketHook");
        ServerInstance->Timers->DelTimer(RefreshTimer);
 
        ServerInstance->Modules->DoneWithInterface("BufferedSocketHook");
index 05ba60b1dce778278f0e626aa54a16884440ef42..01509653c20f41c8245f2eeea84ca5773c89c354 100644 (file)
@@ -63,13 +63,12 @@ class CommandSSLInfo : public Command
 
 class ModuleSSLInfo : public Module
 {
 
 class ModuleSSLInfo : public Module
 {
-       CommandSSLInfo* newcommand;
+       CommandSSLInfo cmd;
  public:
        ModuleSSLInfo(InspIRCd* Me)
  public:
        ModuleSSLInfo(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-               newcommand = new CommandSSLInfo(ServerInstance);
-               ServerInstance->AddCommand(newcommand);
+               ServerInstance->AddCommand(&cmd);
 
                Implementation eventlist[] = { I_OnSyncUserMetaData, I_OnDecodeMetaData, I_OnWhois, I_OnPreCommand };
                ServerInstance->Modules->Attach(eventlist, this, 4);
 
                Implementation eventlist[] = { I_OnSyncUserMetaData, I_OnDecodeMetaData, I_OnWhois, I_OnPreCommand };
                ServerInstance->Modules->Attach(eventlist, this, 4);
index bf742b05e80d913634681487df6962df1d12878b..ccedd5aa29c56ca3f1434db31460039d1c3061ef 100644 (file)
@@ -66,16 +66,13 @@ class SSLMode : public ModeHandler
 class ModuleSSLModes : public Module
 {
 
 class ModuleSSLModes : public Module
 {
 
-       SSLMode* sslm;
+       SSLMode sslm;
 
  public:
        ModuleSSLModes(InspIRCd* Me)
 
  public:
        ModuleSSLModes(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), sslm(Me)
        {
        {
-
-
-               sslm = new SSLMode(ServerInstance);
-               if (!ServerInstance->Modes->AddMode(sslm))
+               if (!ServerInstance->Modes->AddMode(&sslm))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 1);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreJoin };
                ServerInstance->Modules->Attach(eventlist, this, 1);
@@ -104,8 +101,7 @@ class ModuleSSLModes : public Module
 
        virtual ~ModuleSSLModes()
        {
 
        virtual ~ModuleSSLModes()
        {
-               ServerInstance->Modes->DelMode(sslm);
-               delete sslm;
+               ServerInstance->Modes->DelMode(&sslm);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index 19f658ee0f628bf05b0880c44c9267cf73089756..4c5e7c0282641cc018b2176746dcfe0b60ee1774 100644 (file)
@@ -35,16 +35,13 @@ class UserStripColor : public SimpleUserModeHandler
 class ModuleStripColor : public Module
 {
        bool AllowChanOps;
 class ModuleStripColor : public Module
 {
        bool AllowChanOps;
-       ChannelStripColor *csc;
-       UserStripColor *usc;
+       ChannelStripColor csc;
+       UserStripColor usc;
 
  public:
 
  public:
-       ModuleStripColor(InspIRCd* Me) : Module(Me)
+       ModuleStripColor(InspIRCd* Me) : Module(Me), csc(Me), usc(Me)
        {
        {
-               usc = new UserStripColor(ServerInstance);
-               csc = new ChannelStripColor(ServerInstance);
-
-               if (!ServerInstance->Modes->AddMode(usc) || !ServerInstance->Modes->AddMode(csc))
+               if (!ServerInstance->Modes->AddMode(&usc) || !ServerInstance->Modes->AddMode(&csc))
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
                        throw ModuleException("Could not add new modes!");
                Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 3);
@@ -52,10 +49,8 @@ class ModuleStripColor : public Module
 
        virtual ~ModuleStripColor()
        {
 
        virtual ~ModuleStripColor()
        {
-               ServerInstance->Modes->DelMode(usc);
-               ServerInstance->Modes->DelMode(csc);
-               delete usc;
-               delete csc;
+               ServerInstance->Modes->DelMode(&usc);
+               ServerInstance->Modes->DelMode(&csc);
        }
 
        virtual void On005Numeric(std::string &output)
        }
 
        virtual void On005Numeric(std::string &output)
index 08ba21108281b55e511a4f13c50748da54f28ac4..ada7fbc68a1f4a64ed3a6785b391953238e9e99e 100644 (file)
@@ -142,17 +142,15 @@ class CommandSvshold : public Command
 
 class ModuleSVSHold : public Module
 {
 
 class ModuleSVSHold : public Module
 {
-       CommandSvshold *mycommand;
-       SVSHoldFactory *s;
+       CommandSvshold cmd;
+       SVSHoldFactory s;
 
 
  public:
 
 
  public:
-       ModuleSVSHold(InspIRCd* Me) : Module(Me)
+       ModuleSVSHold(InspIRCd* Me) : Module(Me), cmd(Me), s(Me)
        {
        {
-               s = new SVSHoldFactory(ServerInstance);
-               ServerInstance->XLines->RegisterFactory(s);
-               mycommand = new CommandSvshold(Me);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->XLines->RegisterFactory(&s);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnUserPreNick, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
                Implementation eventlist[] = { I_OnUserPreNick, I_OnSyncOtherMetaData, I_OnDecodeMetaData, I_OnStats };
                ServerInstance->Modules->Attach(eventlist, this, 4);
        }
@@ -183,7 +181,7 @@ class ModuleSVSHold : public Module
        virtual ~ModuleSVSHold()
        {
                ServerInstance->XLines->DelAll("SVSHOLD");
        virtual ~ModuleSVSHold()
        {
                ServerInstance->XLines->DelAll("SVSHOLD");
-               ServerInstance->XLines->UnregisterFactory(s);
+               ServerInstance->XLines->UnregisterFactory(&s);
        }
 
        virtual Version GetVersion()
        }
 
        virtual Version GetVersion()
index da8e1b6c4804fd75a1c8a26d0c731a5994841b50..5a253069e0013ccf0f3b4ff74801bccc42ee29b5 100644 (file)
@@ -80,17 +80,16 @@ class CommandSwhois : public Command
 
 class ModuleSWhois : public Module
 {
 
 class ModuleSWhois : public Module
 {
-       CommandSwhois* mycommand;
+       CommandSwhois cmd;
 
        ConfigReader* Conf;
 
  public:
 
        ConfigReader* Conf;
 
  public:
-       ModuleSWhois(InspIRCd* Me) : Module(Me)
+       ModuleSWhois(InspIRCd* Me) : Module(Me), cmd(Me)
        {
 
                Conf = new ConfigReader(ServerInstance);
        {
 
                Conf = new ConfigReader(ServerInstance);
-               mycommand = new CommandSwhois(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_OnDecodeMetaData, I_OnWhoisLine, I_OnSyncUserMetaData, I_OnUserQuit, I_OnCleanup, I_OnRehash, I_OnPostCommand };
                ServerInstance->Modules->Attach(eventlist, this, 7);
        }
                Implementation eventlist[] = { I_OnDecodeMetaData, I_OnWhoisLine, I_OnSyncUserMetaData, I_OnUserQuit, I_OnCleanup, I_OnRehash, I_OnPostCommand };
                ServerInstance->Modules->Attach(eventlist, this, 7);
        }
index 00f5812469bd3879c9e2d47ebefce3749b29d96d..fb74076c04261db450948502f9e9ea524d4e9d57 100644 (file)
@@ -54,16 +54,13 @@ class CommandTaxonomy : public Command
 
 class ModuleTaxonomy : public Module
 {
 
 class ModuleTaxonomy : public Module
 {
-       CommandTaxonomy* newcommand;
+       CommandTaxonomy cmd;
        bool claimed;
  public:
        ModuleTaxonomy(InspIRCd* Me)
        bool claimed;
  public:
        ModuleTaxonomy(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me, this, claimed)
        {
        {
-
-               // Create a new command
-               newcommand = new CommandTaxonomy(ServerInstance, this, claimed);
-               ServerInstance->AddCommand(newcommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_ProtoSendMetaData };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
                Implementation eventlist[] = { I_ProtoSendMetaData };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
index 53d67e8ab8a764b559411e4463e785fa304dff40..31896bfcba0d5e7b79d23dae56dac7e5e52dd845 100644 (file)
@@ -112,14 +112,12 @@ class CommandTban : public Command
 
 class ModuleTimedBans : public Module
 {
 
 class ModuleTimedBans : public Module
 {
-       CommandTban* mycommand;
+       CommandTban cmd;
  public:
        ModuleTimedBans(InspIRCd* Me)
  public:
        ModuleTimedBans(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandTban(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                TimedBanList.clear();
                Implementation eventlist[] = { I_OnDelBan, I_OnBackgroundTimer };
                ServerInstance->Modules->Attach(eventlist, this, 2);
                TimedBanList.clear();
                Implementation eventlist[] = { I_OnDelBan, I_OnBackgroundTimer };
                ServerInstance->Modules->Attach(eventlist, this, 2);
index c0588a5e8e18c10924a4505aea0f67a30d627bd0..2ce4692bb8b8b76a6420ed3abedcd84cdecbbab7 100644 (file)
@@ -62,15 +62,12 @@ class CommandTline : public Command
 
 class ModuleTLine : public Module
 {
 
 class ModuleTLine : public Module
 {
-       CommandTline* newcommand;
+       CommandTline cmd;
  public:
        ModuleTLine(InspIRCd* Me)
  public:
        ModuleTLine(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               newcommand = new CommandTline(ServerInstance);
-               ServerInstance->AddCommand(newcommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
 
        }
 
 
index 1adb00c1afa7c43fc8168ee4351f8ddc1f5a12e1..2cadc852421469bec7c9fa83973688f943c6e49b 100644 (file)
@@ -79,16 +79,13 @@ class CommandUninvite : public Command
 
 class ModuleUninvite : public Module
 {
 
 class ModuleUninvite : public Module
 {
-       CommandUninvite *mycommand;
+       CommandUninvite cmd;
 
  public:
 
 
  public:
 
-       ModuleUninvite(InspIRCd* Me) : Module(Me)
+       ModuleUninvite(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandUninvite(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleUninvite()
        }
 
        virtual ~ModuleUninvite()
index 00db26595490d6e7bdda2ca71719e01cc932955e..8600546bcbfa2a2730695e9b7d962675fe87b101 100644 (file)
@@ -56,14 +56,12 @@ class CommandUserip : public Command
 
 class ModuleUserIP : public Module
 {
 
 class ModuleUserIP : public Module
 {
-       CommandUserip* mycommand;
+       CommandUserip cmd;
  public:
        ModuleUserIP(InspIRCd* Me)
  public:
        ModuleUserIP(InspIRCd* Me)
-               : Module(Me)
+               : Module(Me), cmd(Me)
        {
        {
-
-               mycommand = new CommandUserip(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
+               ServerInstance->AddCommand(&cmd);
                Implementation eventlist[] = { I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
                Implementation eventlist[] = { I_On005Numeric };
                ServerInstance->Modules->Attach(eventlist, this, 1);
        }
index a300ad3b87a3789eac531c2e9cc96a33ca5ef844..005177cdbca114fb7b9162f4a667d3c2184cd5ad 100644 (file)
@@ -58,15 +58,12 @@ class CommandVhost : public Command
 class ModuleVHost : public Module
 {
  private:
 class ModuleVHost : public Module
 {
  private:
-
-       CommandVhost* mycommand;
+       CommandVhost cmd;
 
  public:
 
  public:
-       ModuleVHost(InspIRCd* Me) : Module(Me)
+       ModuleVHost(InspIRCd* Me) : Module(Me), cmd(Me)
        {
        {
-               mycommand = new CommandVhost(ServerInstance);
-               ServerInstance->AddCommand(mycommand);
-
+               ServerInstance->AddCommand(&cmd);
        }
 
        virtual ~ModuleVHost()
        }
 
        virtual ~ModuleVHost()
index e70270424978a17b0a7aad85ed83f8394ba0784a..9b98ca83badedc4b958e6ab5f3301e89b55b1b08 100644 (file)
@@ -367,20 +367,18 @@ class CommandWatch : public Command
 
 class Modulewatch : public Module
 {
 
 class Modulewatch : public Module
 {
-       CommandWatch* mycommand;
-       CommandSVSWatch *sw;
        unsigned int maxwatch;
        unsigned int maxwatch;
+       CommandWatch cmdw;
+       CommandSVSWatch sw;
 
  public:
        Modulewatch(InspIRCd* Me)
 
  public:
        Modulewatch(InspIRCd* Me)
-               : Module(Me), maxwatch(32)
+               : Module(Me), maxwatch(32), cmdw(Me, maxwatch), sw(Me)
        {
                OnRehash(NULL);
                whos_watching_me = new watchentries();
        {
                OnRehash(NULL);
                whos_watching_me = new watchentries();
-               mycommand = new CommandWatch(ServerInstance, maxwatch);
-               ServerInstance->AddCommand(mycommand);
-               sw = new CommandSVSWatch(ServerInstance);
-               ServerInstance->AddCommand(sw);
+               ServerInstance->AddCommand(&cmdw);
+               ServerInstance->AddCommand(&sw);
                Implementation eventlist[] = { I_OnRehash, I_OnGarbageCollect, I_OnCleanup, I_OnUserQuit, I_OnPostConnect, I_OnUserPostNick, I_On005Numeric, I_OnSetAway };
                ServerInstance->Modules->Attach(eventlist, this, 8);
        }
                Implementation eventlist[] = { I_OnRehash, I_OnGarbageCollect, I_OnCleanup, I_OnUserQuit, I_OnPostConnect, I_OnUserPostNick, I_On005Numeric, I_OnSetAway };
                ServerInstance->Modules->Attach(eventlist, this, 8);
        }