}
}
+static struct DummyExtensionItem : LocalExtItem
+{
+ DummyExtensionItem() : LocalExtItem("", NULL) {}
+ void free(void*) {}
+} dummy;
+
Extensible::Extensible()
{
- extensions[NULL] = NULL;
+ extensions[&dummy] = NULL;
}
CullResult Extensible::cull()
{
for(ExtensibleStore::iterator i = extensions.begin(); i != extensions.end(); ++i)
{
- if (i->first)
- i->first->free(i->second);
+ i->first->free(i->second);
}
extensions.clear();
return classbase::cull();
{
ExtensionItem* item = i->first;
std::string value = item->serialize(FORMAT_USER, ext, i->second);
- if (value.empty())
- dumpkeys << " " << i->first;
- else
+ if (!value.empty())
ServerInstance->DumpText(user, checkstr + " meta:" + item->key + " " + value);
+ else if (!item->key.empty())
+ dumpkeys << " " << item->key;
}
if (!dumpkeys.str().empty())
ServerInstance->DumpText(user,checkstr + " metadata", dumpkeys);
{
ExtensionItem* item = i->first;
std::string value = item->serialize(FORMAT_USER, ext, i->second);
- if (value.empty())
- data << "<meta name=\"" << item->key << "\"/>";
- else
+ if (!value.empty())
data << "<meta name=\"" << item->key << "\">" << Sanitize(value) << "</meta>";
+ else if (!item->key.empty())
+ data << "<meta name=\"" << item->key << "\"/>";
}
data << "</metadata>";
}
Membership* memb = x->second;
data << "<channelmember><uid>" << memb->user->uuid << "</uid><privs>"
<< Sanitize(c->GetAllPrefixChars(x->first)) << "</privs><modes>"
- << memb->modes << "</modes></channelmember>";
+ << memb->modes << "</modes>";
+ DumpMeta(data, memb);
+ data << "</channelmember>";
}
DumpMeta(data, c);