diff options
author | Daniel Atallah <datallah@pidgin.im> | 2014-11-05 00:59:59 -0500 |
---|---|---|
committer | Daniel Atallah <datallah@pidgin.im> | 2014-11-05 00:59:59 -0500 |
commit | 1e27e7634c31de14f67da4a756addcf7536db355 (patch) | |
tree | f3f4bde938d9ccf262416bdefb22c6961796702e | |
parent | 3dfef3c946e47c9cf7a30d5f600a1b2fb0b5dd35 (diff) | |
download | pidgin-1e27e7634c31de14f67da4a756addcf7536db355.tar.gz |
Fix plugin pref choice labels to be dynamically allocated.
-rw-r--r-- | libpurple/pluginpref.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libpurple/pluginpref.c b/libpurple/pluginpref.c index 61c0fc493f..6bb18eb0a0 100644 --- a/libpurple/pluginpref.c +++ b/libpurple/pluginpref.c @@ -142,10 +142,19 @@ purple_plugin_pref_new_with_name_and_label(const char *name, const char *label) 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 @@ purple_plugin_pref_add_choice(PurplePluginPref *pref, const char *label, gpointe 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); } |