diff options
author | 0 <NotZed@Ximian.com> | 2001-10-31 02:52:18 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-10-31 02:52:18 +0800 |
commit | d244e01c6d19df90efb20ee4dcf15972f0e10cbc (patch) | |
tree | f83885690a05c0121f8b450c80a333d1780b280d /mail/mail-mt.c | |
parent | 3afcc4239f9fde2ba8adbfa2ea6dcfc72509c846 (diff) | |
download | gsoc2013-evolution-d244e01c6d19df90efb20ee4dcf15972f0e10cbc.tar.gz gsoc2013-evolution-d244e01c6d19df90efb20ee4dcf15972f0e10cbc.tar.zst gsoc2013-evolution-d244e01c6d19df90efb20ee4dcf15972f0e10cbc.zip |
If we have a cancellation setup, destroy it immediately, to save fd's.
2001-10-30 <NotZed@Ximian.com>
* mail-mt.c (mail_msg_received): If we have a cancellation setup,
destroy it immediately, to save fd's.
(mail_msg_cancel): Check cancel != NULL.
(mail_msg_free): Same.
svn path=/trunk/; revision=14470
Diffstat (limited to 'mail/mail-mt.c')
-rw-r--r-- | mail/mail-mt.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mail/mail-mt.c b/mail/mail-mt.c index 25ff6c632a..d02eaaab60 100644 --- a/mail/mail-mt.c +++ b/mail/mail-mt.c @@ -206,7 +206,9 @@ void mail_msg_free(void *msg) MAIL_MT_UNLOCK(mail_msg_lock); - camel_operation_unref(m->cancel); + if (m->cancel) + camel_operation_unref(m->cancel); + camel_exception_clear(&m->ex); /*g_free(m->priv->what);*/ g_free(m->priv); @@ -277,7 +279,7 @@ void mail_msg_cancel(unsigned int msgid) MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, (void *)msgid); - if (m) + if (m && m->cancel) camel_operation_cancel(m->cancel); MAIL_MT_UNLOCK(mail_msg_lock); @@ -500,6 +502,10 @@ mail_msg_received(EThread *e, EMsg *msg, void *data) if (m->ops->describe_msg) { camel_operation_end(m->cancel); camel_operation_unregister(m->cancel); + MAIL_MT_LOCK(mail_msg_lock); + camel_operation_unref(m->cancel); + m->cancel = NULL; + MAIL_MT_UNLOCK(mail_msg_lock); } } @@ -909,7 +915,8 @@ static void do_op_status(struct _mail_msg *mm) MAIL_MT_UNLOCK (mail_msg_lock); if (activity) gtk_object_unref (GTK_OBJECT (activity)); - camel_operation_unref (msg->cancel); + if (msg->cancel) + camel_operation_unref (msg->cancel); camel_exception_clear (&msg->ex); g_free (msg->priv); g_free (msg); |