aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2024-09-13 11:52:26 +0100
committerGravatar Sadie Powell2024-09-13 11:52:26 +0100
commit45f10a7f6f3dfdca38051c14020c2f6bd2646054 (patch)
tree4ea2058020c32463562ae0efa5a8696d0f84696e /src
parentRaise an exception if an extban name or letter is already in use. (diff)
Only remove extbans on unload if provided by the right module.
Diffstat (limited to 'src')
-rw-r--r--src/coremods/core_channel/extban.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/coremods/core_channel/extban.cpp b/src/coremods/core_channel/extban.cpp
index 13ecfcb7f..c9c2611fd 100644
--- a/src/coremods/core_channel/extban.cpp
+++ b/src/coremods/core_channel/extban.cpp
@@ -153,8 +153,13 @@ ModResult ExtBanManager::GetStatus(ExtBan::ActingBase* extban, User* user, Chann
void ExtBanManager::DelExtBan(ExtBan::Base* extban)
{
- byletter.erase(extban->GetLetter());
- byname.erase(extban->GetName());
+ auto lit = byletter.find(extban->GetLetter());
+ if (lit != byletter.end() && lit->second->creator.ptr() == extban->creator.ptr())
+ byletter.erase(lit);
+
+ auto nit = byname.find(extban->GetName());
+ if (nit != byname.end() && nit->second->creator.ptr() == extban->creator.ptr())
+ byname.erase(nit);
}
ExtBan::Base* ExtBanManager::FindName(const std::string& xbname) const