aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog5
-rw-r--r--mail/mail-callbacks.c9
-rw-r--r--mail/mail-ops.c19
3 files changed, 22 insertions, 11 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index a0fffd755d..eb394c2aa3 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,10 @@
2001-05-23 Jeffrey Stedfast <fejj@ximian.com>
+ * mail-callbacks.c (composer_postpone_cb): Don't free the
+ folder-info here, instead have mail_append_mail() call our new
+ function, append_mail_cleanup() which'll free the
+ folder-info. This fixes the problem of send-later segfaulting.
+
* message-list.c (message_list_set_folder): Make the message-list
respect the "hide deleted messages" setting. Fixes bug #2248.
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index 778dc5f043..38734b37cf 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -368,6 +368,12 @@ composer_send_cb (EMsgComposer *composer, gpointer data)
mail_send_mail (transport->url, message, composer_sent_cb, send);
}
+static void
+append_mail_cleanup (CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data)
+{
+ camel_message_info_free (info);
+}
+
void
composer_postpone_cb (EMsgComposer *composer, gpointer data)
{
@@ -382,9 +388,8 @@ composer_postpone_cb (EMsgComposer *composer, gpointer data)
info = camel_message_info_new ();
info->flags = CAMEL_MESSAGE_SEEN;
- mail_append_mail (outbox_folder, message, info, NULL, NULL);
+ mail_append_mail (outbox_folder, message, info, append_mail_cleanup, NULL);
camel_object_unref (CAMEL_OBJECT (message));
- camel_message_info_free (info);
if (psd) {
camel_folder_set_message_flags (psd->folder, psd->uid, psd->flags, psd->flags);
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 4b99bc76ac..34a88a7b51 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -860,24 +860,25 @@ void
mail_append_mail (CamelFolder *folder,
CamelMimeMessage *message,
CamelMessageInfo *info,
- void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data), void *data)
+ void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok, void *data),
+ void *data)
{
struct _append_msg *m;
-
+
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (CAMEL_IS_MIME_MESSAGE (message));
-
- m = mail_msg_new(&append_mail_op, NULL, sizeof(*m));
+
+ m = mail_msg_new (&append_mail_op, NULL, sizeof (*m));
m->folder = folder;
- camel_object_ref((CamelObject *)folder);
+ camel_object_ref (CAMEL_OBJECT (folder));
m->message = message;
- camel_object_ref((CamelObject *)message);
+ camel_object_ref (CAMEL_OBJECT (message));
m->info = info;
-
+
m->done = done;
m->data = data;
-
- e_thread_put(mail_thread_new, (EMsg *)m);
+
+ e_thread_put (mail_thread_new, (EMsg *)m);
}
/* ** TRANSFER MESSAGES **************************************************** */