mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-12 20:19:02 -04:00
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
This commit is contained in:
parent
04e097e207
commit
7c55dfc788
@ -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()
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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=");
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user