diff options
| author | 2026-03-28 21:32:23 +0000 | |
|---|---|---|
| committer | 2026-03-29 00:42:15 +0000 | |
| commit | cbc5431d62e3fe9166f18395dce3ddf2af0906d3 (patch) | |
| tree | 48a87fc27dc4826ce0caf4071e2060a9ff9e24c5 /modules/cap.cpp | |
| parent | Move service code from base to its own header. (diff) | |
Switch modules from reference<> to shared_ptr<> and weak_ptr<>.
Diffstat (limited to 'modules/cap.cpp')
| -rw-r--r-- | modules/cap.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/modules/cap.cpp b/modules/cap.cpp index 0835847ab..cfa2adb12 100644 --- a/modules/cap.cpp +++ b/modules/cap.cpp @@ -87,10 +87,10 @@ class Cap::ManagerImpl final throw ModuleException(this->service_creator, "Too many caps"); } - void OnReloadModuleSave(Module* mod, ReloadModule::CustomData& cd) override + void OnReloadModuleSave(const ModulePtr& mod, ReloadModule::CustomData& cd) override { ServerInstance->Logs.Debug(MODNAME, "OnReloadModuleSave()"); - if (mod == this->service_creator) + if (insp::same_ptr(mod, this->service_creator)) return; auto* capmoddata = new CapModData(); @@ -99,7 +99,7 @@ class Cap::ManagerImpl final for (const auto& [_, cap] : caps) { // Only save users of caps that belong to the module being reloaded - if (cap->service_creator != mod) + if (!insp::same_ptr(cap->service_creator, mod)) continue; ServerInstance->Logs.Debug(MODNAME, "Module being reloaded implements cap {}, saving cap users", cap->GetName()); @@ -115,7 +115,7 @@ class Cap::ManagerImpl final } } - void OnReloadModuleRestore(Module* mod, void* data) override + void OnReloadModuleRestore(const ModulePtr& mod, void* data) override { CapModData* capmoddata = static_cast<CapModData*>(data); for (const auto& capdata : capmoddata->caps) @@ -144,7 +144,7 @@ class Cap::ManagerImpl final } public: - ManagerImpl(Module* mod, Events::ModuleEventProvider& evprovref) + ManagerImpl(const WeakModulePtr& mod, Events::ModuleEventProvider& evprovref) : Cap::Manager(mod) , ReloadModule::EventListener(mod) , capext(mod) @@ -313,7 +313,7 @@ namespace } } -Cap::ExtItem::ExtItem(Module* mod) +Cap::ExtItem::ExtItem(const WeakModulePtr& mod) : IntExtItem(mod, "caps", ExtensionType::USER, true) { } @@ -398,7 +398,7 @@ private: public: BoolExtItem holdext; - CommandCap(Module* mod) + CommandCap(const WeakModulePtr& mod) : SplitCommand(mod, "CAP", 1) , evprov(mod, "cap") , manager(mod, evprov) @@ -465,7 +465,7 @@ class PoisonCap final : public Cap::Capability { public: - PoisonCap(Module* mod) + PoisonCap(const WeakModulePtr& mod) : Cap::Capability(mod, "inspircd.org/poison") { } @@ -487,8 +487,8 @@ private: public: ModuleCap() : Module(VF_VENDOR, "Provides support for the IRCv3 Client Capability Negotiation extension.") - , cmd(this) - , poisoncap(this) + , cmd(weak_from_this()) + , poisoncap(weak_from_this()) { } |
