diff options
| author | 2024-09-13 11:52:26 +0100 | |
|---|---|---|
| committer | 2024-09-13 11:52:26 +0100 | |
| commit | 45f10a7f6f3dfdca38051c14020c2f6bd2646054 (patch) | |
| tree | 4ea2058020c32463562ae0efa5a8696d0f84696e /src | |
| parent | Raise 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.cpp | 9 |
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 |
