| 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 |