libgaim/prefs.c

changeset 15085
5c650ae458df
parent 14936
b4e907b75205
child 15353
6cb9019ddd3f
equal deleted inserted replaced
15084:6cb675dea5fb 15085:5c650ae458df
615 615
616 static void 616 static void
617 remove_pref(struct gaim_pref *pref) 617 remove_pref(struct gaim_pref *pref)
618 { 618 {
619 char *name; 619 char *name;
620 GSList *l;
620 621
621 if(!pref || pref == &prefs) 622 if(!pref || pref == &prefs)
622 return; 623 return;
623 624
624 while(pref->first_child) 625 while(pref->first_child)
641 g_hash_table_remove(prefs_hash, name); 642 g_hash_table_remove(prefs_hash, name);
642 g_free(name); 643 g_free(name);
643 644
644 free_pref_value(pref); 645 free_pref_value(pref);
645 646
646 g_slist_free(pref->callbacks); 647 while((l = pref->callbacks) != NULL) {
648 pref->callbacks = pref->callbacks->next;
649 g_free(l->data);
650 g_slist_free_1(l);
651 }
647 g_free(pref->name); 652 g_free(pref->name);
648 g_free(pref); 653 g_free(pref);
649 } 654 }
650 655
651 void 656 void
1005 gaim_prefs_connect_callback(void *handle, const char *name, GaimPrefCallback func, gpointer data) 1010 gaim_prefs_connect_callback(void *handle, const char *name, GaimPrefCallback func, gpointer data)
1006 { 1011 {
1007 struct gaim_pref *pref; 1012 struct gaim_pref *pref;
1008 struct pref_cb *cb; 1013 struct pref_cb *cb;
1009 static guint cb_id = 0; 1014 static guint cb_id = 0;
1015
1016 g_return_val_if_fail(name != NULL, 0);
1017 g_return_val_if_fail(func != NULL, 0);
1010 1018
1011 pref = find_pref(name); 1019 pref = find_pref(name);
1012 if (pref == NULL) 1020 if (pref == NULL)
1013 return 0; 1021 return 0;
1014 1022

mercurial