Wed, 05 Nov 2014 00:59:59 -0500
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); }