comparison src/server.c @ 2017:eee309c0de93

[gaim-migrate @ 2027] this is better. also plugged a mem leak for when you left a chat after you were disconnected. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 14 Jun 2001 21:43:59 +0000
parents 9187e83c8b03
children 3366311426df
comparison
equal deleted inserted replaced
2016:9a2e3902658c 2017:eee309c0de93
59 } 59 }
60 } 60 }
61 61
62 void serv_close(struct gaim_connection *gc) 62 void serv_close(struct gaim_connection *gc)
63 { 63 {
64 GSList *bcs = gc->buddy_chats; 64 while (gc->buddy_chats) {
65 struct conversation *b; 65 struct conversation *b = gc->buddy_chats->data;
66 while (bcs) {
67 b = (struct conversation *)bcs->data;
68 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); 66 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b);
69 b->gc = NULL; 67 b->gc = NULL;
70 bcs = gc->buddy_chats;
71 } 68 }
72 69
73 if (gc->idle_timer > 0) 70 if (gc->idle_timer > 0)
74 gtk_timeout_remove(gc->idle_timer); 71 gtk_timeout_remove(gc->idle_timer);
75 gc->idle_timer = 0; 72 gc->idle_timer = 0;
868 865
869 debug_printf("Leaving room %s.\n", b->name); 866 debug_printf("Leaving room %s.\n", b->name);
870 867
871 g->buddy_chats = g_slist_remove(g->buddy_chats, b); 868 g->buddy_chats = g_slist_remove(g->buddy_chats, b);
872 869
873 while (b->in_room) { 870 delete_chat(b);
874 char *tmp = b->in_room->data;
875 b->in_room = g_list_remove(b->in_room, tmp);
876 g_free(tmp);
877 }
878
879 while (b->ignored) {
880 g_free(b->ignored->data);
881 b->ignored = g_list_remove(b->ignored, b->ignored->data);
882 }
883
884 g_string_free(b->history, TRUE);
885 g_free(b);
886 } 871 }
887 872
888 void serv_got_chat_in(struct gaim_connection *g, int id, char *who, int whisper, char *message, time_t mtime) 873 void serv_got_chat_in(struct gaim_connection *g, int id, char *who, int whisper, char *message, time_t mtime)
889 { 874 {
890 int w; 875 int w;