# HG changeset patch # User Sadrul Habib Chowdhury # Date 1239429696 0 # Node ID 384eaba9974ee1141b35ac78133f074107eb4451 # Parent 4f2f5659aa0df5fedd820a6a19470669351b5c64 Reset some global data when uninit-ing. Fixes a crash on quit. diff -r 4f2f5659aa0d -r 384eaba9974e libpurple/account.c --- a/libpurple/account.c Sat Apr 11 06:00:50 2009 +0000 +++ b/libpurple/account.c Sat Apr 11 06:01:36 2009 +0000 @@ -2787,7 +2787,6 @@ void purple_accounts_uninit(void) { - GList* account; gpointer handle = purple_accounts_get_handle(); if (save_timer != 0) { @@ -2799,9 +2798,6 @@ purple_signals_disconnect_by_handle(handle); purple_signals_unregister_by_instance(handle); - account = purple_accounts_get_all(); - while (account) { - purple_account_destroy(account->data); - account = g_list_delete_link(account, account); - } + for (; accounts; accounts = g_list_delete_link(accounts, accounts)) + purple_account_destroy(accounts->data); } diff -r 4f2f5659aa0d -r 384eaba9974e libpurple/blist.c --- a/libpurple/blist.c Sat Apr 11 06:00:50 2009 +0000 +++ b/libpurple/blist.c Sat Apr 11 06:01:36 2009 +0000 @@ -2616,7 +2616,7 @@ purple_blist_node_destroy(PurpleBlistNode *node) { PurpleBlistNode *child, *next_child; - + child = node->child; while (child) { next_child = child->next; @@ -2936,6 +2936,7 @@ purple_blist_node_destroy(node); node = next_node; } + purplebuddylist->root = NULL; purple_signals_unregister_by_instance(purple_blist_get_handle()); }