summaryrefslogtreecommitdiff
path: root/src/base.cpp
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-18 02:57:46 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-18 02:57:46 +0000
commite50d016aa23083f81dcf181f68edb81c5b23c78d (patch)
tree2f627c4d456ec360a05c013832142df187e193d6 /src/base.cpp
parent93a78a57ada6d5dab410c2bd3c4b02f4fa15684c (diff)
Cull channels, warn when Extensible objects are not culled as they must be
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11901 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/base.cpp')
-rw-r--r--src/base.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/base.cpp b/src/base.cpp
index 15a642eb4..977227440 100644
--- a/src/base.cpp
+++ b/src/base.cpp
@@ -136,17 +136,27 @@ void Extensible::doUnhookExtensions(const std::vector<ExtensionItem*>& toRemove)
}
}
+Extensible::Extensible()
+{
+ extensions[NULL] = NULL;
+}
+
CullResult Extensible::cull()
{
for(ExtensibleStore::iterator i = extensions.begin(); i != extensions.end(); ++i)
{
- i->first->free(i->second);
+ if (i->first)
+ i->first->free(i->second);
}
+ extensions.clear();
return classbase::cull();
}
Extensible::~Extensible()
{
+ if (!extensions.empty() && ServerInstance && ServerInstance->Logs)
+ ServerInstance->Logs->Log("CULLLIST", DEBUG,
+ "Extensible destructor called without cull @%p", (void*)this);
}
LocalExtItem::LocalExtItem(const std::string& Key, Module* mod) : ExtensionItem(Key, mod)