# HG changeset patch # User Sadrul Habib Chowdhury # Date 1166263106 0 # Node ID 152756b02fca388019265224b8471bcfa8cea382 # Parent 4bf7801a25398f3d8b88b341fb2a0ba4c083820a [gaim-migrate @ 18010] Do not use gtkblist after freeing and setting it to NULL. Disconnect from the all signals when uniniting. committer: Tailor Script diff -r 4bf7801a2539 -r 152756b02fca gtk/gtkblist.c --- a/gtk/gtkblist.c Fri Dec 15 10:35:18 2006 +0000 +++ b/gtk/gtkblist.c Sat Dec 16 09:58:26 2006 +0000 @@ -4794,6 +4794,8 @@ static void gaim_gtk_blist_update(GaimBuddyList *list, GaimBlistNode *node) { + if (list) + gtkblist = GAIM_GTK_BLIST(list); if(!gtkblist || !node) return; @@ -4828,10 +4830,7 @@ if (!gtkblist) return; - gaim_signal_disconnect(gaim_connections_get_handle(), "signed-on", - gtkblist, GAIM_CALLBACK(sign_on_off_cb)); - gaim_signal_disconnect(gaim_connections_get_handle(), "signed-off", - gtkblist, GAIM_CALLBACK(sign_on_off_cb)); + gaim_signals_disconnect_by_handle(gtkblist); gtk_widget_destroy(gtkblist->window); @@ -4851,15 +4850,15 @@ gtkblist->window = gtkblist->vbox = gtkblist->treeview = NULL; gtkblist->treemodel = NULL; g_object_unref(G_OBJECT(gtkblist->ift)); - g_free(gtkblist); - accountmenu = NULL; - gtkblist = NULL; gdk_cursor_unref(gtkblist->hand_cursor); gdk_cursor_unref(gtkblist->arrow_cursor); gtkblist->hand_cursor = NULL; gtkblist->arrow_cursor = NULL; + g_free(gtkblist); + accountmenu = NULL; + gtkblist = NULL; gaim_prefs_disconnect_by_handle(gaim_gtk_blist_get_handle()); } @@ -5684,6 +5683,7 @@ void gaim_gtk_blist_uninit(void) { gaim_signals_unregister_by_instance(gaim_gtk_blist_get_handle()); + gaim_signals_disconnect_by_handle(gaim_gtk_blist_get_handle()); } /*********************************************************************