diff -r 85f0e6e9dc5c -r aec0dda889bc src/gtkconv.c --- a/src/gtkconv.c Tue Oct 04 13:52:09 2005 +0000 +++ b/src/gtkconv.c Wed Oct 05 00:28:06 2005 +0000 @@ -6191,6 +6191,20 @@ { window_list = g_list_remove(window_list, win); + if (win->gtkconvs) { + while (win->gtkconvs) { + GList *nextgtk = win->gtkconvs->next; + GaimGtkConversation *gtkconv = win->gtkconvs->data; + GList *nextcore = gtkconv->convs->next; + GaimConversation *conv = gtkconv->convs->data; + gaim_conversation_destroy(conv); + if (!nextgtk && !nextcore) + /* we'll end up invoking ourselves when we destroy our last child */ + /* so don't destroy ourselves right now */ + return; + } + return; + } gtk_widget_destroy(win->window); g_object_unref(G_OBJECT(win->menu.item_factory));