From cbdcd051c63c4ff98dfb4ff45388e722f8d0a2de Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Fri, 27 Mar 2026 13:10:26 +0000 Subject: Switch the extensible system to using shared pointers. --- modules/monitor.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'modules/monitor.cpp') diff --git a/modules/monitor.cpp b/modules/monitor.cpp index 5255c79b2..9c14db837 100644 --- a/modules/monitor.cpp +++ b/modules/monitor.cpp @@ -74,24 +74,27 @@ class IRCv3::Monitor::Manager final ExtData* Get(User* user, bool create = false) { - ExtData* extdata = static_cast(GetRaw(user)); - if ((!extdata) && (create)) + auto* extdata = GetRaw(user); + if (!extdata) { - extdata = new ExtData; - SetRaw(user, extdata); + if (!create) + return nullptr; + + SetRaw(user, std::make_shared()); + extdata = GetRaw(user); } - return extdata; + return std::static_pointer_cast(*extdata).get(); } void Unset(User* user) { - Delete(user, UnsetRaw(user)); + OnDelete(user, UnsetRaw(user)); } - std::string ToInternal(const Extensible* container, void* item) const noexcept override + std::string ToInternal(const Extensible* container, const ExtensionPtr& item) const noexcept override { std::string ret; - const ExtData* extdata = static_cast(item); + const auto& extdata = std::static_pointer_cast(item); for (const auto* entry : extdata->list) ret.append(entry->GetNick()).push_back(' '); if (!ret.empty()) @@ -100,11 +103,6 @@ class IRCv3::Monitor::Manager final } void FromInternal(Extensible* container, const std::string& value) noexcept override; - - void Delete(Extensible* container, void* item) override - { - delete static_cast(item); - } }; public: -- cgit v1.3.1-10-gc9f91