diff libpurple/prefs.c @ 25908:8958393be615

propagate from branch 'im.pidgin.pidgin' (head f49b0bab604f956eb4f9fce3a103320497cd40e5) to branch 'im.pidgin.pidgin.next.minor' (head 4f8748faa3551f9475017bfe39dd11ff5e560cf0)
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 21 Jan 2009 18:34:32 +0000
parents 94a6eb10c691 7e2f27351358
children 8290e36a5a73
line wrap: on
line diff
--- a/libpurple/prefs.c	Thu Jan 15 22:46:15 2009 +0000
+++ b/libpurple/prefs.c	Wed Jan 21 18:34:32 2009 +0000
@@ -694,12 +694,15 @@
 	char *name;
 	GSList *l;
 
-	if(!pref || pref == &prefs)
+	if(!pref)
 		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 {
@@ -712,7 +715,8 @@
 
 	name = pref_full_name(pref);
 
-	purple_debug_info("prefs", "removing pref %s\n", name);
+	if (prefs_loaded)
+		purple_debug_info("prefs", "removing pref %s\n", name);
 
 	g_hash_table_remove(prefs_hash, name);
 	g_free(name);
@@ -1446,6 +1450,9 @@
 		sync_prefs();
 	}
 
+	prefs_loaded = FALSE;
+	purple_prefs_destroy();
+	g_hash_table_destroy(prefs_hash);
+	prefs_hash = NULL;
 
-	prefs_loaded = FALSE;
 }