evolution r36922 - trunk/mail
- From: jeffcai svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r36922 - trunk/mail
- Date: Mon, 22 Dec 2008 03:11:09 +0000 (UTC)
Author: jeffcai
Date: Mon Dec 22 03:11:09 2008
New Revision: 36922
URL: http://svn.gnome.org/viewvc/evolution?rev=36922&view=rev
Log:
2008-12-22 Norman Wang <zhichao wang sun com>
** Fix for bug #558337
* mail/em-subscribe-editor.c: Create a wrapper class MailMsgListNode of
_zsubscribe_msg message. The MailMsgListNode class is the subclass of
EDListNode class. So the _zsubscribe_msg can be added into the EDList.
Modified:
trunk/mail/ChangeLog
trunk/mail/em-subscribe-editor.c
Modified: trunk/mail/em-subscribe-editor.c
==============================================================================
--- trunk/mail/em-subscribe-editor.c (original)
+++ trunk/mail/em-subscribe-editor.c Mon Dec 22 03:11:09 2008
@@ -111,6 +111,12 @@
GtkTreePath *path;
};
+typedef struct _MailMsgListNode MailMsgListNode;
+struct _MailMsgListNode {
+ EDListNode node;
+ MailMsg *msg;
+};
+
static void sub_editor_busy(EMSubscribeEditor *se, int dir);
static int sub_queue_fill_level(EMSubscribe *sub, EMSubscribeNode *node);
static void sub_selection_changed(GtkTreeSelection *selection, EMSubscribe *sub);
@@ -185,6 +191,7 @@
GtkTreeModel *model;
EMSubscribeNode *node;
gboolean subscribed, issub;
+ MailMsgListNode *msgListNode;
m->sub->subscribe_id = -1;
if (m->sub->cancel)
@@ -209,10 +216,13 @@
}
/* queue any further ones, or if out, update the ui */
- next = (struct _zsubscribe_msg *)e_dlist_remhead(&m->sub->subscribe);
- if (next) {
+ msgListNode = (MailMsgListNode *) e_dlist_remhead(&m->sub->subscribe);
+ if (msgListNode) {
+ next = (struct _zsubscribe_msg *) msgListNode->msg;
+ /* Free the memory of the MailMsgListNode which won't be used anymore. */
+ g_free(msgListNode);
next->sub->subscribe_id = next->base.seq;
- mail_msg_unordered_push (next);
+ mail_msg_unordered_push (next);
} else {
/* should it go off the model instead? */
sub_selection_changed(gtk_tree_view_get_selection(m->sub->tree), m->sub);
@@ -239,6 +249,7 @@
sub_subscribe_folder (EMSubscribe *sub, EMSubscribeNode *node, int state, const char *spath)
{
struct _zsubscribe_msg *m;
+ MailMsgListNode *msgListNode;
int id;
m = mail_msg_new (&sub_subscribe_folder_info);
@@ -254,8 +265,10 @@
d(printf("running subscribe folder '%s'\n", spath));
mail_msg_unordered_push (m);
} else {
+ msgListNode = g_malloc0(sizeof(MailMsgListNode));
+ msgListNode->msg = (MailMsg *) m;
d(printf("queueing subscribe folder '%s'\n", spath));
- e_dlist_addtail(&sub->subscribe, (EDListNode *)m);
+ e_dlist_addtail(&sub->subscribe, (EDListNode *)msgListNode);
}
return id;
@@ -541,6 +554,7 @@
sub_destroy(GtkWidget *w, EMSubscribe *sub)
{
struct _zsubscribe_msg *m;
+ MailMsgListNode *msgListNode;
d(printf("subscribe closed\n"));
sub->cancel = TRUE;
@@ -551,8 +565,12 @@
if (sub->subscribe_id != -1)
mail_msg_cancel(sub->subscribe_id);
- while ( (m = (struct _zsubscribe_msg *)e_dlist_remhead(&sub->subscribe)) )
+ while ( (msgListNode = (MailMsgListNode *)e_dlist_remhead(&sub->subscribe))) {
+ m = (struct _zsubscribe_msg *) msgListNode->msg;
+ /* Free the memory of MailMsgListNode which won't be used anymore. */
+ g_free(msgListNode);
mail_msg_unref(m);
+ }
sub_unref(sub);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]