diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-16 15:43:53 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-16 15:43:53 +0000 |
commit | 7c55dfc7887b2ca91e4ebdf9f2733de8adb56e18 (patch) | |
tree | 49c0b12a63774597e950ed0168630e35966f0cfa | |
parent | 04e097e20747f07cd69722535fa68a6506882d9f (diff) |
Clean up crash on destruction of statics at exit
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11877 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | src/mode.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_banexception.cpp | 8 | ||||
-rw-r--r-- | src/modules/m_inviteexception.cpp | 10 | ||||
-rw-r--r-- | src/modules/m_namedmodes.cpp | 5 | ||||
-rw-r--r-- | src/server.cpp | 1 |
5 files changed, 10 insertions, 17 deletions
diff --git a/src/mode.cpp b/src/mode.cpp index 98b5fe8c4..03d0b5269 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -57,7 +57,8 @@ ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modelett ModeHandler::~ModeHandler() { - ServerInstance->Modes->DelMode(this); + if (ServerInstance) + ServerInstance->Modes->DelMode(this); } bool ModeHandler::IsListMode() diff --git a/src/modules/m_banexception.cpp b/src/modules/m_banexception.cpp index aac8fe776..5059fbbed 100644 --- a/src/modules/m_banexception.cpp +++ b/src/modules/m_banexception.cpp @@ -44,7 +44,6 @@ public: { if (!ServerInstance->Modes->AddMode(&be)) throw ModuleException("Could not add new modes!"); - ServerInstance->Modules->PublishInterface("ChannelBanList", this); be.DoImplements(this); Implementation list[] = { I_OnRehash, I_On005Numeric, I_OnExtBanCheck, I_OnCheckChannelBan }; @@ -123,12 +122,7 @@ public: Version GetVersion() { - return Version("Provides support for the +e channel mode", VF_COMMON | VF_VENDOR, API_VERSION); - } - - ~ModuleBanException() - { - ServerInstance->Modules->UnpublishInterface("ChannelBanList", this); + return Version("Provides support for the +e channel mode", VF_COMMON | VF_VENDOR); } }; diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp index 7fe7d40dc..9d0e0f54e 100644 --- a/src/modules/m_inviteexception.cpp +++ b/src/modules/m_inviteexception.cpp @@ -43,7 +43,6 @@ public: { if (!ServerInstance->Modes->AddMode(&ie)) throw ModuleException("Could not add new modes!"); - ServerInstance->Modules->PublishInterface("ChannelBanList", this); ie.DoImplements(this); Implementation eventlist[] = { I_On005Numeric, I_OnCheckInvite }; @@ -62,7 +61,6 @@ public: modelist* list = ie.extItem.get(chan); if (list) { - std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString(); for (modelist::iterator it = list->begin(); it != list->end(); it++) { if (chan->CheckBan(user, it->mask)) @@ -71,7 +69,6 @@ public: } } } - // or if there wasn't a list, there can't be anyone on it, so we don't need to do anything. } return MOD_RES_PASSTHRU; @@ -94,12 +91,7 @@ public: Version GetVersion() { - return Version("Provides support for the +I channel mode", VF_VENDOR | VF_COMMON, API_VERSION); - } - - ~ModuleInviteException() - { - ServerInstance->Modules->UnpublishInterface("ChannelBanList", this); + return Version("Provides support for the +I channel mode", VF_VENDOR | VF_COMMON); } }; diff --git a/src/modules/m_namedmodes.cpp b/src/modules/m_namedmodes.cpp index 4bf8960e1..bc8279f69 100644 --- a/src/modules/m_namedmodes.cpp +++ b/src/modules/m_namedmodes.cpp @@ -27,6 +27,11 @@ class ModuleNamedModes : public Module return Version("Provides the ability to manipulate modes via long names.",VF_VENDOR); } + void Prioritize() + { + ServerInstance->Modules->SetPriority(this, I_OnPreMode, PRIORITY_FIRST); + } + void On005Numeric(std::string& line) { std::string::size_type pos = line.find(" CHANMODES="); diff --git a/src/server.cpp b/src/server.cpp index e5546654e..085348976 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -44,6 +44,7 @@ void InspIRCd::Exit(int status) this->SendError("Exiting with status " + ConvToStr(status) + " (" + std::string(ExitCodes[status]) + ")"); this->Cleanup(); delete this; + ServerInstance = NULL; } exit (status); } |