--- a/libpurple/prefs.c Thu Jan 08 05:00:02 2009 +0000 +++ b/libpurple/prefs.c Thu Jan 15 22:37:48 2009 +0000 @@ -694,15 +694,12 @@ char *name; GSList *l; - if(!pref) + if(!pref || pref == &prefs) return; while(pref->first_child) remove_pref(pref->first_child); - if(pref == &prefs) - return; - if(pref->parent->first_child == pref) { pref->parent->first_child = pref->sibling; } else { @@ -715,8 +712,7 @@ name = pref_full_name(pref); - if (prefs_loaded) - purple_debug_info("prefs", "removing pref %s\n", name); + purple_debug_info("prefs", "removing pref %s\n", name); g_hash_table_remove(prefs_hash, name); g_free(name); @@ -1450,9 +1446,6 @@ sync_prefs(); } + prefs_loaded = FALSE; - purple_prefs_destroy(); - g_hash_table_destroy(prefs_hash); - prefs_hash = NULL; - }