diff libpurple/protocols/jabber/jabber.c @ 25763:860ebaf275ae

Add more jabber plugin unloading functions to clean up more data structures In reality, probably not terribly useful since the entire program is about to quit.
author Paul Aurich <paul@darkrain42.org>
date Sat, 22 Nov 2008 19:44:05 +0000
parents 1b64942c5fb2
children b1b1b75a922e
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Sat Nov 22 18:53:48 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Sat Nov 22 19:44:05 2008 +0000
@@ -1518,6 +1518,16 @@
 	}
 }
 
+static void jabber_features_destroy(void)
+{
+	while (jabber_features) {
+		JabberFeature *feature = jabber_features->data;
+		g_free(feature->namespace);
+		g_free(feature);
+		jabber_features = g_list_remove_link(jabber_features, jabber_features);
+	}
+}
+
 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
 	GList *identity;
 	JabberIdentity *ident;
@@ -1542,6 +1552,19 @@
 	jabber_identities = g_list_append(jabber_identities, ident);
 }
 
+static void jabber_identities_destroy(void)
+{
+	while (jabber_identities) {
+		JabberIdentity *id = jabber_identities->data;
+		g_free(id->category);
+		g_free(id->type);
+		g_free(id->lang);
+		g_free(id->name);
+		g_free(id);
+		jabber_identities = g_list_remove_link(jabber_identities, jabber_identities);
+	}
+}
+
 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
 {
 	return "jabber";
@@ -2635,3 +2658,10 @@
 							 NULL, 1,
 							 purple_value_new(PURPLE_TYPE_STRING));
 }
+
+void
+jabber_uninit_plugin(void)
+{
+	jabber_features_destroy();
+	jabber_identities_destroy();
+}