# HG changeset patch # User Eric Warmenhoven # Date 992555039 0 # Node ID eee309c0de9332df72903614f3e1d2f60b67e352 # Parent 9a2e3902658c5bc15daf31b12c56eb7b8fd81f7d [gaim-migrate @ 2027] this is better. also plugged a mem leak for when you left a chat after you were disconnected. committer: Tailor Script diff -r 9a2e3902658c -r eee309c0de93 src/buddy_chat.c --- a/src/buddy_chat.c Thu Jun 14 17:33:25 2001 +0000 +++ b/src/buddy_chat.c Thu Jun 14 21:43:59 2001 +0000 @@ -1009,7 +1009,8 @@ gtk_widget_show(win); } -void chat_set_topic(struct conversation *b, char* who, char* topic) { +void chat_set_topic(struct conversation *b, char* who, char* topic) +{ gtk_entry_set_text(GTK_ENTRY(b->topic_text), topic); } @@ -1023,6 +1024,19 @@ } } +void delete_chat(struct conversation *b) +{ + while (b->in_room) { + g_free(b->in_room->data); + b->in_room = g_list_remove(b->in_room, b->in_room->data); + } + while (b->ignored) { + g_free(b->ignored->data); + b->ignored = g_list_remove(b->ignored, b->ignored->data); + } + g_string_free(b->history, TRUE); + g_free(b); +} void setup_buddy_chats() { diff -r 9a2e3902658c -r eee309c0de93 src/conversation.c --- a/src/conversation.c Thu Jun 14 17:33:25 2001 +0000 +++ b/src/conversation.c Thu Jun 14 21:43:59 2001 +0000 @@ -468,15 +468,8 @@ chats = g_list_remove(chats, c); if (c->gc) serv_chat_leave(c->gc, c->id); - else { - /* bah */ - while (c->in_room) { - char *tmp = c->in_room->data; - c->in_room = g_list_remove(c->in_room, tmp); - g_free(tmp); - } - g_free(c); - } + else + delete_chat(c); } else { delete_conversation(c); } diff -r 9a2e3902658c -r eee309c0de93 src/gaim.h --- a/src/gaim.h Thu Jun 14 17:33:25 2001 +0000 +++ b/src/gaim.h Thu Jun 14 21:43:59 2001 +0000 @@ -582,6 +582,7 @@ extern void rename_chat_buddy(struct conversation *, char *, char *); extern void remove_chat_buddy(struct conversation *, char *); extern void show_new_buddy_chat(struct conversation *); +extern void delete_chat(struct conversation *); extern void setup_buddy_chats(); extern void build_imchat_box(gboolean); extern void do_quit(); diff -r 9a2e3902658c -r eee309c0de93 src/server.c --- a/src/server.c Thu Jun 14 17:33:25 2001 +0000 +++ b/src/server.c Thu Jun 14 21:43:59 2001 +0000 @@ -61,13 +61,10 @@ void serv_close(struct gaim_connection *gc) { - GSList *bcs = gc->buddy_chats; - struct conversation *b; - while (bcs) { - b = (struct conversation *)bcs->data; + while (gc->buddy_chats) { + struct conversation *b = gc->buddy_chats->data; gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); b->gc = NULL; - bcs = gc->buddy_chats; } if (gc->idle_timer > 0) @@ -870,19 +867,7 @@ g->buddy_chats = g_slist_remove(g->buddy_chats, b); - while (b->in_room) { - char *tmp = b->in_room->data; - b->in_room = g_list_remove(b->in_room, tmp); - g_free(tmp); - } - - while (b->ignored) { - g_free(b->ignored->data); - b->ignored = g_list_remove(b->ignored, b->ignored->data); - } - - g_string_free(b->history, TRUE); - g_free(b); + delete_chat(b); } void serv_got_chat_in(struct gaim_connection *g, int id, char *who, int whisper, char *message, time_t mtime)