Fix plugin pref choice labels to be dynamically allocated. release-2.x.y

Wed, 05 Nov 2014 00:59:59 -0500

author
Daniel Atallah <datallah@pidgin.im>
date
Wed, 05 Nov 2014 00:59:59 -0500
branch
release-2.x.y
changeset 36221
277c5fda03fe
parent 36220
f26d96f03176
child 36224
5fdaf1c7c04f

Fix plugin pref choice labels to be dynamically allocated.

libpurple/pluginpref.c file | annotate | diff | comparison | revisions
--- a/libpurple/pluginpref.c	Wed Nov 05 00:09:52 2014 -0500
+++ b/libpurple/pluginpref.c	Wed Nov 05 00:59:59 2014 -0500
@@ -142,10 +142,19 @@
 void
 purple_plugin_pref_destroy(PurplePluginPref *pref)
 {
+	GList *tmp;
 	g_return_if_fail(pref != NULL);
 
 	g_free(pref->name);
 	g_free(pref->label);
+	tmp = pref->choices;
+	while(tmp) {
+		g_free(tmp->data);
+		/* Remove the string, and the data entries */
+		tmp = g_list_delete_link(tmp, tmp);
+		tmp = g_list_delete_link(tmp, tmp);
+	}
+
 	g_list_free(pref->choices);
 	g_free(pref);
 }
@@ -253,7 +262,7 @@
 	g_return_if_fail(label != NULL);
 	g_return_if_fail(choice || purple_prefs_get_type(pref->name) == PURPLE_PREF_INT);
 
-	pref->choices = g_list_append(pref->choices, (gpointer)label);
+	pref->choices = g_list_append(pref->choices, g_strdup(label));
 	pref->choices = g_list_append(pref->choices, choice);
 }
 

mercurial