Mercurial > pidgin.yaz
diff src/away.c @ 4274:906f61f27479
[gaim-migrate @ 4525]
(01:26:02) Robot101: guess which bugs I fixed
(01:26:14) Me: i can't
(01:26:26) Robot101: really common crash...
(01:26:35) Robot101: I fixed the return from away crash! =)
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 10 Jan 2003 06:32:14 +0000 |
parents | 7002b6f16bdf |
children | 5fb47ec9bfe4 |
line wrap: on
line diff
--- a/src/away.c Fri Jan 10 01:33:09 2003 +0000 +++ b/src/away.c Fri Jan 10 06:32:14 2003 +0000 @@ -53,30 +53,33 @@ imaway = NULL; } -void purge_away_queue(GSList *queue) +void purge_away_queue(GSList **queue) { + GSList *q = *queue; + struct queued_message *qm; struct conversation *cnv; - gtk_clist_freeze(GTK_CLIST(clistqueue)); - gtk_clist_clear(GTK_CLIST(clistqueue)); - - while (queue) { - struct queued_message *qm = queue->data; + while (q) { + qm = q->data; cnv = find_conversation(qm->name); if (!cnv) cnv = new_conversation(qm->name); + if (g_slist_index(connections, qm->gc) >= 0) set_convo_gc(cnv, qm->gc); + write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm, qm->len); - queue = g_slist_remove(queue, qm); - g_free(qm->message); g_free(qm); + + q->data = NULL; + q = q->next; } - gtk_clist_thaw(GTK_CLIST(clistqueue)); + g_slist_free(*queue); + *queue = NULL; } void dequeue_by_buddy(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { @@ -134,7 +137,8 @@ } else { gtk_widget_hide(clistqueue); gtk_widget_hide(clistqueuesw); - purge_away_queue(message_queue); + gtk_clist_clear(GTK_CLIST(clistqueue)); + purge_away_queue(&message_queue); } } @@ -143,7 +147,12 @@ if (imaway) { GtkWidget *tmp = imaway; - purge_away_queue(message_queue); + gtk_clist_freeze(GTK_CLIST(clistqueue)); + gtk_clist_clear(GTK_CLIST(clistqueue)); + + purge_away_queue(&message_queue); + + gtk_clist_thaw(GTK_CLIST(clistqueue)); imaway = NULL; gtk_widget_destroy(tmp);