]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Pass the Extensible container to ExtensionItem::free().
authorPeter Powell <petpow@saberuk.com>
Sun, 12 Aug 2018 12:29:09 +0000 (13:29 +0100)
committerPeter Powell <petpow@saberuk.com>
Sun, 12 Aug 2018 12:29:09 +0000 (13:29 +0100)
include/extensible.h
src/base.cpp
src/coremods/core_channel/invite.h
src/modules/m_callerid.cpp
src/modules/m_monitor.cpp
src/modules/m_sslinfo.cpp
src/modules/m_topiclock.cpp

index afb1cd5b66e0097def46c36c18e509e341152b19..f88ede4611805e449f6c690864f0327b7abe09cf 100644 (file)
@@ -65,7 +65,7 @@ class CoreExport ExtensionItem : public ServiceProvider, public usecountbase
         */
        virtual void unserialize(SerializeFormat format, Extensible* container, const std::string& value) = 0;
        /** Free the item */
-       virtual void free(void* item) = 0;
+       virtual void free(Extensible* container, void* item) = 0;
 
        /** Register this object in the ExtensionManager
         */
@@ -147,7 +147,7 @@ class CoreExport LocalExtItem : public ExtensionItem
        virtual ~LocalExtItem();
        std::string serialize(SerializeFormat format, const Extensible* container, void* item) const CXX11_OVERRIDE;
        void unserialize(SerializeFormat format, Extensible* container, const std::string& value) CXX11_OVERRIDE;
-       void free(void* item) CXX11_OVERRIDE = 0;
+       void free(Extensible* container, void* item) CXX11_OVERRIDE = 0;
 };
 
 template <typename T, typename Del = stdalgo::defaultdeleter<T> >
@@ -190,7 +190,7 @@ class SimpleExtItem : public LocalExtItem
                del(old);
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                Del del;
                del(static_cast<T*>(item));
@@ -216,7 +216,7 @@ class CoreExport LocalIntExt : public LocalExtItem
        intptr_t get(const Extensible* container) const;
        intptr_t set(Extensible* container, intptr_t value);
        void unset(Extensible* container) { set(container, 0); }
-       void free(void* item) CXX11_OVERRIDE;
+       void free(Extensible* container, void* item) CXX11_OVERRIDE;
 };
 
 class CoreExport StringExtItem : public ExtensionItem
@@ -229,5 +229,5 @@ class CoreExport StringExtItem : public ExtensionItem
        void unserialize(SerializeFormat format, Extensible* container, const std::string& value) CXX11_OVERRIDE;
        void set(Extensible* container, const std::string& value);
        void unset(Extensible* container);
-       void free(void* item) CXX11_OVERRIDE;
+       void free(Extensible* container, void* item) CXX11_OVERRIDE;
 };
index 0ff3fbe4c303256865110bd050492abdeb7c6de2..f698bad2eb6ebbf03918406676c63f3e9d3e60ea 100644 (file)
@@ -186,7 +186,7 @@ void Extensible::doUnhookExtensions(const std::vector<reference<ExtensionItem> >
                ExtensibleStore::iterator e = extensions.find(item);
                if (e != extensions.end())
                {
-                       item->free(e->second);
+                       item->free(this, e->second);
                        extensions.erase(e);
                }
        }
@@ -208,7 +208,7 @@ void Extensible::FreeAllExtItems()
 {
        for(ExtensibleStore::iterator i = extensions.begin(); i != extensions.end(); ++i)
        {
-               i->first->free(i->second);
+               i->first->free(this, i->second);
        }
        extensions.clear();
 }
@@ -294,7 +294,7 @@ intptr_t LocalIntExt::set(Extensible* container, intptr_t value)
                return reinterpret_cast<intptr_t>(unset_raw(container));
 }
 
-void LocalIntExt::free(void*)
+void LocalIntExt::free(Extensible* container, void* item)
 {
 }
 
@@ -337,7 +337,7 @@ void StringExtItem::unset(Extensible* container)
        delete static_cast<std::string*>(old);
 }
 
-void StringExtItem::free(void* item)
+void StringExtItem::free(Extensible* container, void* item)
 {
        delete static_cast<std::string*>(item);
 }
index 2a99ec2df805c1bb566263bcfa00620ba1131594..19e3861f88940595ad0fe725aba7debd9fff4f64 100644 (file)
@@ -66,10 +66,10 @@ class Invite::ExtItem : public ExtensionItem
        {
                void* store = unset_raw(ext);
                if (store)
-                       free(store);
+                       free(ext, store);
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                Store<T>* store = static_cast<Store<T>*>(item);
                for (typename Store<T>::List::iterator i = store->invites.begin(); i != store->invites.end(); )
index b0ec3b8ff900d9642b723a5ab7dbe515ad7f6fec..f50bdeedff3ca2b5e6e970d46a86de21d9f755e7 100644 (file)
@@ -91,7 +91,7 @@ struct CallerIDExtInfo : public ExtensionItem
 
                void* old = get_raw(container);
                if (old)
-                       this->free(old);
+                       this->free(NULL, old);
                callerid_data* dat = new callerid_data;
                set_raw(container, dat);
 
@@ -125,7 +125,7 @@ struct CallerIDExtInfo : public ExtensionItem
                return dat;
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                callerid_data* dat = static_cast<callerid_data*>(item);
 
index 38e7ccc3ea39ef1302ce0ac0e1d02598f5338282..fd72c7320dd5ed8596d1eb0780ff82459bba4e9d 100644 (file)
@@ -79,7 +79,7 @@ class IRCv3::Monitor::Manager
 
                void unset(Extensible* container)
                {
-                       free(unset_raw(container));
+                       free(container, unset_raw(container));
                }
 
                std::string serialize(SerializeFormat format, const Extensible* container, void* item) const CXX11_OVERRIDE
@@ -101,7 +101,7 @@ class IRCv3::Monitor::Manager
 
                void unserialize(SerializeFormat format, Extensible* container, const std::string& value) CXX11_OVERRIDE;
 
-               void free(void* item) CXX11_OVERRIDE
+               void free(Extensible* container, void* item) CXX11_OVERRIDE
                {
                        delete static_cast<ExtData*>(item);
                }
index 6f679a871ccc0f70590ec842c030abaeeee2c088..6d0a8424952bdff3eefb1687e63a58f6bf1be7dd 100644 (file)
@@ -79,7 +79,7 @@ class SSLCertExt : public ExtensionItem {
                }
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                ssl_cert* old = static_cast<ssl_cert*>(item);
                if (old && old->refcount_dec())
index cbe524408b39f133856c8c50452a1229f8499ab8..c65f2766854b6572d49f4fb4e50fea23555289d9 100644 (file)
@@ -115,7 +115,7 @@ class FlagExtItem : public ExtensionItem
                unset_raw(container);
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                // nothing to free
        }