# HG changeset patch # User Daniel Atallah # Date 1164156222 0 # Node ID dd4160b36f808b6a9d371af3697314f388ae49d3 # Parent 2d3c7f76cea04f10cc7df5d3a6e3f123b6461e63 [gaim-migrate @ 17805] Don't allow invalid plugin callbacks to registered (and eventually crash). Fix an unlikely leak. committer: Tailor Script diff -r 2d3c7f76cea0 -r dd4160b36f80 libgaim/prefs.c --- a/libgaim/prefs.c Tue Nov 21 21:05:44 2006 +0000 +++ b/libgaim/prefs.c Wed Nov 22 00:43:42 2006 +0000 @@ -617,6 +617,7 @@ remove_pref(struct gaim_pref *pref) { char *name; + GSList *l; if(!pref || pref == &prefs) return; @@ -643,7 +644,11 @@ free_pref_value(pref); - g_slist_free(pref->callbacks); + while((l = pref->callbacks) != NULL) { + pref->callbacks = pref->callbacks->next; + g_free(l->data); + g_slist_free_1(l); + } g_free(pref->name); g_free(pref); } @@ -1008,6 +1013,9 @@ struct pref_cb *cb; static guint cb_id = 0; + g_return_val_if_fail(name != NULL, 0); + g_return_val_if_fail(func != NULL, 0); + pref = find_pref(name); if (pref == NULL) return 0;